mirror of
https://github.com/p2p-ld/nwb-linkml.git
synced 2024-11-14 10:44:28 +00:00
model rebuild
This commit is contained in:
parent
8449e9f742
commit
06b68e8b42
159 changed files with 9820 additions and 4130 deletions
|
@ -170,9 +170,9 @@ class Image(NWBData):
|
||||||
description: Optional[str] = Field(None, description="""Description of the image.""")
|
description: Optional[str] = Field(None, description="""Description of the image.""")
|
||||||
value: Optional[
|
value: Optional[
|
||||||
Union[
|
Union[
|
||||||
NDArray[Shape["* x, * y"], float],
|
NDArray[Shape["* x, * y"], float | int],
|
||||||
NDArray[Shape["* x, * y, 3 r_g_b"], float],
|
NDArray[Shape["* x, * y, 3 r_g_b"], float | int],
|
||||||
NDArray[Shape["* x, * y, 4 r_g_b_a"], float],
|
NDArray[Shape["* x, * y, 4 r_g_b_a"], float | int],
|
||||||
]
|
]
|
||||||
] = Field(None)
|
] = Field(None)
|
||||||
|
|
||||||
|
@ -333,13 +333,16 @@ class ProcessingModule(NWBContainer):
|
||||||
{"from_schema": "core.nwb.base", "tree_root": True}
|
{"from_schema": "core.nwb.base", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[Union[DynamicTable, NWBDataInterface]]] = Field(
|
name: str = Field(...)
|
||||||
|
description: str = Field(
|
||||||
|
..., description="""Description of this collection of processed data."""
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, Union[DynamicTable, NWBDataInterface]]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}, {"range": "DynamicTable"}]}
|
"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}, {"range": "DynamicTable"}]}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class Images(NWBDataInterface):
|
class Images(NWBDataInterface):
|
||||||
|
@ -353,7 +356,7 @@ class Images(NWBDataInterface):
|
||||||
|
|
||||||
name: str = Field("Images", json_schema_extra={"linkml_meta": {"ifabsent": "string(Images)"}})
|
name: str = Field("Images", json_schema_extra={"linkml_meta": {"ifabsent": "string(Images)"}})
|
||||||
description: str = Field(..., description="""Description of this collection of images.""")
|
description: str = Field(..., description="""Description of this collection of images.""")
|
||||||
image: List[Image] = Field(..., description="""Images stored in this collection.""")
|
image: List[str] = Field(..., description="""Images stored in this collection.""")
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
|
|
|
@ -213,6 +213,16 @@ class SpatialSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Optional[str] = Field(
|
unit: Optional[str] = Field(
|
||||||
"meters",
|
"meters",
|
||||||
description="""Base unit of measurement for working with the data. The default value is 'meters'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
description="""Base unit of measurement for working with the data. The default value is 'meters'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
|
@ -220,8 +230,8 @@ class SpatialSeriesData(ConfiguredBaseModel):
|
||||||
)
|
)
|
||||||
value: Optional[
|
value: Optional[
|
||||||
Union[
|
Union[
|
||||||
NDArray[Shape["* num_times"], float],
|
NDArray[Shape["* num_times"], float | int],
|
||||||
NDArray[Shape["* num_times, * num_features"], float],
|
NDArray[Shape["* num_times, * num_features"], float | int],
|
||||||
]
|
]
|
||||||
] = Field(None)
|
] = Field(None)
|
||||||
|
|
||||||
|
@ -235,10 +245,13 @@ class BehavioralEpochs(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[IntervalSeries]] = Field(
|
name: str = Field(
|
||||||
|
"BehavioralEpochs",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(BehavioralEpochs)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, IntervalSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "IntervalSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "IntervalSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class BehavioralEvents(NWBDataInterface):
|
class BehavioralEvents(NWBDataInterface):
|
||||||
|
@ -250,10 +263,13 @@ class BehavioralEvents(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[TimeSeries]] = Field(
|
name: str = Field(
|
||||||
|
"BehavioralEvents",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(BehavioralEvents)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class BehavioralTimeSeries(NWBDataInterface):
|
class BehavioralTimeSeries(NWBDataInterface):
|
||||||
|
@ -265,10 +281,13 @@ class BehavioralTimeSeries(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[TimeSeries]] = Field(
|
name: str = Field(
|
||||||
|
"BehavioralTimeSeries",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(BehavioralTimeSeries)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class PupilTracking(NWBDataInterface):
|
class PupilTracking(NWBDataInterface):
|
||||||
|
@ -280,10 +299,12 @@ class PupilTracking(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[TimeSeries]] = Field(
|
name: str = Field(
|
||||||
|
"PupilTracking", json_schema_extra={"linkml_meta": {"ifabsent": "string(PupilTracking)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class EyeTracking(NWBDataInterface):
|
class EyeTracking(NWBDataInterface):
|
||||||
|
@ -295,10 +316,12 @@ class EyeTracking(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[SpatialSeries]] = Field(
|
name: str = Field(
|
||||||
|
"EyeTracking", json_schema_extra={"linkml_meta": {"ifabsent": "string(EyeTracking)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, SpatialSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class CompassDirection(NWBDataInterface):
|
class CompassDirection(NWBDataInterface):
|
||||||
|
@ -310,10 +333,13 @@ class CompassDirection(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[SpatialSeries]] = Field(
|
name: str = Field(
|
||||||
|
"CompassDirection",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(CompassDirection)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, SpatialSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class Position(NWBDataInterface):
|
class Position(NWBDataInterface):
|
||||||
|
@ -325,10 +351,12 @@ class Position(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[SpatialSeries]] = Field(
|
name: str = Field(
|
||||||
|
"Position", json_schema_extra={"linkml_meta": {"ifabsent": "string(Position)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, SpatialSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
|
|
|
@ -190,11 +190,12 @@ class ElectricalSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: Union[
|
channel_conversion: Optional[NDArray[Shape["* num_channels"], float]] = Field(
|
||||||
NDArray[Shape["* num_times"], float],
|
None,
|
||||||
NDArray[Shape["* num_times, * num_channels"], float],
|
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.""",
|
||||||
NDArray[Shape["* num_times, * num_channels, * num_samples"], float],
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_channels"}]}}},
|
||||||
] = Field(..., description="""Recorded voltage data.""")
|
)
|
||||||
|
data: ElectricalSeriesData = Field(..., description="""Recorded voltage data.""")
|
||||||
electrodes: Named[DynamicTableRegion] = Field(
|
electrodes: Named[DynamicTableRegion] = Field(
|
||||||
...,
|
...,
|
||||||
description="""DynamicTableRegion pointer to the electrodes that this time series was generated from.""",
|
description="""DynamicTableRegion pointer to the electrodes that this time series was generated from.""",
|
||||||
|
@ -207,11 +208,6 @@ class ElectricalSeries(TimeSeries):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
channel_conversion: Optional[NDArray[Shape["* num_channels"], float]] = Field(
|
|
||||||
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.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_channels"}]}}},
|
|
||||||
)
|
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
description="""Description of the time series.""",
|
description="""Description of the time series.""",
|
||||||
|
@ -249,6 +245,41 @@ class ElectricalSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ElectricalSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Recorded voltage data.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.ecephys"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["volts"] = Field(
|
||||||
|
"volts",
|
||||||
|
description="""Base unit of measurement for working with the data. This value is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion' and 'channel_conversion' (if present).""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
|
)
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* num_times"], float | int],
|
||||||
|
NDArray[Shape["* num_times, * num_channels"], float | int],
|
||||||
|
NDArray[Shape["* num_times, * num_channels, * num_samples"], float | int],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class SpikeEventSeries(ElectricalSeries):
|
class SpikeEventSeries(ElectricalSeries):
|
||||||
"""
|
"""
|
||||||
Stores snapshots/snippets of recorded spike events (i.e., threshold crossings). This may also be raw data, as reported by ephys hardware. If so, the TimeSeries::description field should describe how events were detected. All SpikeEventSeries should reside in a module (under EventWaveform interface) even if the spikes were reported and stored by hardware. All events span the same recording channels and store snapshots of equal duration. TimeSeries::data array structure: [num events] [num channels] [num samples] (or [num events] [num samples] for single electrode).
|
Stores snapshots/snippets of recorded spike events (i.e., threshold crossings). This may also be raw data, as reported by ephys hardware. If so, the TimeSeries::description field should describe how events were detected. All SpikeEventSeries should reside in a module (under EventWaveform interface) even if the spikes were reported and stored by hardware. All events span the same recording channels and store snapshots of equal duration. TimeSeries::data array structure: [num events] [num channels] [num samples] (or [num events] [num samples] for single electrode).
|
||||||
|
@ -259,15 +290,17 @@ class SpikeEventSeries(ElectricalSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: Union[
|
data: SpikeEventSeriesData = Field(..., description="""Spike waveforms.""")
|
||||||
NDArray[Shape["* num_events, * num_samples"], float],
|
|
||||||
NDArray[Shape["* num_events, * num_channels, * num_samples"], float],
|
|
||||||
] = Field(..., description="""Spike waveforms.""")
|
|
||||||
timestamps: NDArray[Shape["* num_times"], float] = Field(
|
timestamps: NDArray[Shape["* num_times"], float] = Field(
|
||||||
...,
|
...,
|
||||||
description="""Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. Timestamps are required for the events. Unlike for TimeSeries, timestamps are required for SpikeEventSeries and are thus re-specified here.""",
|
description="""Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. Timestamps are required for the events. Unlike for TimeSeries, timestamps are required for SpikeEventSeries and are thus re-specified here.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
||||||
)
|
)
|
||||||
|
channel_conversion: Optional[NDArray[Shape["* num_channels"], float]] = Field(
|
||||||
|
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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_channels"}]}}},
|
||||||
|
)
|
||||||
electrodes: Named[DynamicTableRegion] = Field(
|
electrodes: Named[DynamicTableRegion] = Field(
|
||||||
...,
|
...,
|
||||||
description="""DynamicTableRegion pointer to the electrodes that this time series was generated from.""",
|
description="""DynamicTableRegion pointer to the electrodes that this time series was generated from.""",
|
||||||
|
@ -280,11 +313,6 @@ class SpikeEventSeries(ElectricalSeries):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
channel_conversion: Optional[NDArray[Shape["* num_channels"], float]] = Field(
|
|
||||||
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.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_channels"}]}}},
|
|
||||||
)
|
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
description="""Description of the time series.""",
|
description="""Description of the time series.""",
|
||||||
|
@ -317,6 +345,40 @@ class SpikeEventSeries(ElectricalSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class SpikeEventSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Spike waveforms.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.ecephys"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["volts"] = Field(
|
||||||
|
"volts",
|
||||||
|
description="""Unit of measurement for waveforms, which is fixed to 'volts'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
|
)
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* num_events, * num_samples"], float | int],
|
||||||
|
NDArray[Shape["* num_events, * num_channels, * num_samples"], float | int],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class FeatureExtraction(NWBDataInterface):
|
class FeatureExtraction(NWBDataInterface):
|
||||||
"""
|
"""
|
||||||
Features, such as PC1 and PC2, that are extracted from signals stored in a SpikeEventSeries or other source.
|
Features, such as PC1 and PC2, that are extracted from signals stored in a SpikeEventSeries or other source.
|
||||||
|
@ -415,10 +477,12 @@ class EventWaveform(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[SpikeEventSeries]] = Field(
|
name: str = Field(
|
||||||
|
"EventWaveform", json_schema_extra={"linkml_meta": {"ifabsent": "string(EventWaveform)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, SpikeEventSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpikeEventSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpikeEventSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class FilteredEphys(NWBDataInterface):
|
class FilteredEphys(NWBDataInterface):
|
||||||
|
@ -430,10 +494,12 @@ class FilteredEphys(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[ElectricalSeries]] = Field(
|
name: str = Field(
|
||||||
|
"FilteredEphys", json_schema_extra={"linkml_meta": {"ifabsent": "string(FilteredEphys)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, ElectricalSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "ElectricalSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "ElectricalSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class LFP(NWBDataInterface):
|
class LFP(NWBDataInterface):
|
||||||
|
@ -445,10 +511,10 @@ class LFP(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[ElectricalSeries]] = Field(
|
name: str = Field("LFP", json_schema_extra={"linkml_meta": {"ifabsent": "string(LFP)"}})
|
||||||
|
value: Optional[Dict[str, ElectricalSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "ElectricalSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "ElectricalSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class ElectrodeGroup(NWBContainer):
|
class ElectrodeGroup(NWBContainer):
|
||||||
|
@ -591,7 +657,9 @@ class Clustering(NWBDataInterface):
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
ElectricalSeries.model_rebuild()
|
ElectricalSeries.model_rebuild()
|
||||||
|
ElectricalSeriesData.model_rebuild()
|
||||||
SpikeEventSeries.model_rebuild()
|
SpikeEventSeries.model_rebuild()
|
||||||
|
SpikeEventSeriesData.model_rebuild()
|
||||||
FeatureExtraction.model_rebuild()
|
FeatureExtraction.model_rebuild()
|
||||||
EventDetection.model_rebuild()
|
EventDetection.model_rebuild()
|
||||||
EventWaveform.model_rebuild()
|
EventWaveform.model_rebuild()
|
||||||
|
|
|
@ -247,9 +247,6 @@ class TimeIntervals(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class TimeIntervalsTimeseries(VectorData):
|
class TimeIntervalsTimeseries(VectorData):
|
||||||
|
|
|
@ -211,28 +211,28 @@ class NWBFile(NWBContainer):
|
||||||
...,
|
...,
|
||||||
description="""Date and time corresponding to time zero of all timestamps. The date is stored in UTC with local timezone offset as ISO 8601 extended formatted string: 2018-09-28T14:43:54.123+02:00. Dates stored in UTC end in \"Z\" with no timezone offset. Date accuracy is up to milliseconds. All times stored in the file use this time as reference (i.e., time zero).""",
|
description="""Date and time corresponding to time zero of all timestamps. The date is stored in UTC with local timezone offset as ISO 8601 extended formatted string: 2018-09-28T14:43:54.123+02:00. Dates stored in UTC end in \"Z\" with no timezone offset. Date accuracy is up to milliseconds. All times stored in the file use this time as reference (i.e., time zero).""",
|
||||||
)
|
)
|
||||||
acquisition: Optional[List[Union[DynamicTable, NWBDataInterface]]] = Field(
|
acquisition: Optional[Dict[str, Union[DynamicTable, NWBDataInterface]]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Data streams recorded from the system, including ephys, ophys, tracking, etc. This group should be read-only after the experiment is completed and timestamps are corrected to a common timebase. The data stored here may be links to raw data stored in external NWB files. This will allow keeping bulky raw data out of the file while preserving the option of keeping some/all in the file. Acquired data includes tracking and experimental data streams (i.e., everything measured from the system). If bulky data is stored in the /acquisition group, the data can exist in a separate NWB file that is linked to by the file being used for processing and analysis.""",
|
description="""Data streams recorded from the system, including ephys, ophys, tracking, etc. This group should be read-only after the experiment is completed and timestamps are corrected to a common timebase. The data stored here may be links to raw data stored in external NWB files. This will allow keeping bulky raw data out of the file while preserving the option of keeping some/all in the file. Acquired data includes tracking and experimental data streams (i.e., everything measured from the system). If bulky data is stored in the /acquisition group, the data can exist in a separate NWB file that is linked to by the file being used for processing and analysis.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}, {"range": "DynamicTable"}]}
|
"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}, {"range": "DynamicTable"}]}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
analysis: Optional[List[Union[DynamicTable, NWBContainer]]] = Field(
|
analysis: Optional[Dict[str, Union[DynamicTable, NWBContainer]]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Lab-specific and custom scientific analysis of data. There is no defined format for the content of this group - the format is up to the individual user/lab. To facilitate sharing analysis data between labs, the contents here should be stored in standard types (e.g., neurodata_types) and appropriately documented. The file can store lab-specific and custom data analysis without restriction on its form or schema, reducing data formatting restrictions on end users. Such data should be placed in the analysis group. The analysis data should be documented so that it could be shared with other labs.""",
|
description="""Lab-specific and custom scientific analysis of data. There is no defined format for the content of this group - the format is up to the individual user/lab. To facilitate sharing analysis data between labs, the contents here should be stored in standard types (e.g., neurodata_types) and appropriately documented. The file can store lab-specific and custom data analysis without restriction on its form or schema, reducing data formatting restrictions on end users. Such data should be placed in the analysis group. The analysis data should be documented so that it could be shared with other labs.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"any_of": [{"range": "NWBContainer"}, {"range": "DynamicTable"}]}
|
"linkml_meta": {"any_of": [{"range": "NWBContainer"}, {"range": "DynamicTable"}]}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
scratch: Optional[List[Union[DynamicTable, NWBContainer]]] = Field(
|
scratch: Optional[Dict[str, Union[DynamicTable, NWBContainer]]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""A place to store one-off analysis results. Data placed here is not intended for sharing. By placing data here, users acknowledge that there is no guarantee that their data meets any standard.""",
|
description="""A place to store one-off analysis results. Data placed here is not intended for sharing. By placing data here, users acknowledge that there is no guarantee that their data meets any standard.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"any_of": [{"range": "NWBContainer"}, {"range": "DynamicTable"}]}
|
"linkml_meta": {"any_of": [{"range": "NWBContainer"}, {"range": "DynamicTable"}]}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
processing: Optional[List[ProcessingModule]] = Field(
|
processing: Optional[Dict[str, ProcessingModule]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""The home for ProcessingModules. These modules perform intermediate analysis of data that is necessary to perform before scientific analysis. Examples include spike clustering, extracting position from tracking data, stitching together image slices. ProcessingModules can be large and express many data sets from relatively complex analysis (e.g., spike detection and clustering) or small, representing extraction of position information from tracking video, or even binary lick/no-lick decisions. Common software tools (e.g., klustakwik, MClust) are expected to read/write data here. 'Processing' refers to intermediate analysis of the acquired data to make it more amenable to scientific analysis.""",
|
description="""The home for ProcessingModules. These modules perform intermediate analysis of data that is necessary to perform before scientific analysis. Examples include spike clustering, extracting position from tracking data, stitching together image slices. ProcessingModules can be large and express many data sets from relatively complex analysis (e.g., spike detection and clustering) or small, representing extraction of position information from tracking video, or even binary lick/no-lick decisions. Common software tools (e.g., klustakwik, MClust) are expected to read/write data here. 'Processing' refers to intermediate analysis of the acquired data to make it more amenable to scientific analysis.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ProcessingModule"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ProcessingModule"}]}},
|
||||||
|
@ -250,6 +250,9 @@ class NWBFile(NWBContainer):
|
||||||
description="""Experimental intervals, whether that be logically distinct sub-experiments having a particular scientific goal, trials (see trials subgroup) during an experiment, or epochs (see epochs subgroup) deriving from analysis of data.""",
|
description="""Experimental intervals, whether that be logically distinct sub-experiments having a particular scientific goal, trials (see trials subgroup) during an experiment, or epochs (see epochs subgroup) deriving from analysis of data.""",
|
||||||
)
|
)
|
||||||
units: Optional[Units] = Field(None, description="""Data about sorted spike units.""")
|
units: Optional[Units] = Field(None, description="""Data about sorted spike units.""")
|
||||||
|
specifications: Optional[dict] = Field(
|
||||||
|
None, description="""Nested dictionary of schema specifications"""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class NWBFileStimulus(ConfiguredBaseModel):
|
class NWBFileStimulus(ConfiguredBaseModel):
|
||||||
|
@ -265,12 +268,12 @@ class NWBFileStimulus(ConfiguredBaseModel):
|
||||||
"linkml_meta": {"equals_string": "stimulus", "ifabsent": "string(stimulus)"}
|
"linkml_meta": {"equals_string": "stimulus", "ifabsent": "string(stimulus)"}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
presentation: Optional[List[TimeSeries]] = Field(
|
presentation: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Stimuli presented during the experiment.""",
|
description="""Stimuli presented during the experiment.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}},
|
||||||
)
|
)
|
||||||
templates: Optional[List[TimeSeries]] = Field(
|
templates: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None,
|
None,
|
||||||
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.""",
|
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.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}},
|
||||||
|
@ -348,11 +351,11 @@ class NWBFileGeneral(ConfiguredBaseModel):
|
||||||
None,
|
None,
|
||||||
description="""Information about virus(es) used in experiments, including virus ID, source, date made, injection location, volume, etc.""",
|
description="""Information about virus(es) used in experiments, including virus ID, source, date made, injection location, volume, etc.""",
|
||||||
)
|
)
|
||||||
nwb_container: Optional[List[NWBContainer]] = Field(
|
nwb_container: Optional[Dict[str, NWBContainer]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Place-holder than can be extended so that lab-specific meta-data can be placed in /general.""",
|
description="""Place-holder than can be extended so that lab-specific meta-data can be placed in /general.""",
|
||||||
)
|
)
|
||||||
devices: Optional[List[Device]] = Field(
|
devices: Optional[Dict[str, Device]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Description of hardware devices used during experiment, e.g., monitors, ADC boards, microscopes, etc.""",
|
description="""Description of hardware devices used during experiment, e.g., monitors, ADC boards, microscopes, etc.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "Device"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "Device"}]}},
|
||||||
|
@ -367,12 +370,12 @@ class NWBFileGeneral(ConfiguredBaseModel):
|
||||||
intracellular_ephys: Optional[GeneralIntracellularEphys] = Field(
|
intracellular_ephys: Optional[GeneralIntracellularEphys] = Field(
|
||||||
None, description="""Metadata related to intracellular electrophysiology."""
|
None, description="""Metadata related to intracellular electrophysiology."""
|
||||||
)
|
)
|
||||||
optogenetics: Optional[List[OptogeneticStimulusSite]] = Field(
|
optogenetics: Optional[Dict[str, OptogeneticStimulusSite]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Metadata describing optogenetic stimuluation.""",
|
description="""Metadata describing optogenetic stimuluation.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "OptogeneticStimulusSite"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "OptogeneticStimulusSite"}]}},
|
||||||
)
|
)
|
||||||
optophysiology: Optional[List[ImagingPlane]] = Field(
|
optophysiology: Optional[Dict[str, ImagingPlane]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Metadata related to optophysiology.""",
|
description="""Metadata related to optophysiology.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ImagingPlane"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ImagingPlane"}]}},
|
||||||
|
@ -450,12 +453,12 @@ class GeneralExtracellularEphys(ConfiguredBaseModel):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
electrode_group: Optional[List[ElectrodeGroup]] = Field(
|
|
||||||
None, description="""Physical group of electrodes."""
|
|
||||||
)
|
|
||||||
electrodes: Optional[ExtracellularEphysElectrodes] = Field(
|
electrodes: Optional[ExtracellularEphysElectrodes] = Field(
|
||||||
None, description="""A table of all electrodes (i.e. channels) used for recording."""
|
None, description="""A table of all electrodes (i.e. channels) used for recording."""
|
||||||
)
|
)
|
||||||
|
value: Optional[Dict[str, ElectrodeGroup]] = Field(
|
||||||
|
None, description="""Physical group of electrodes."""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ExtracellularEphysElectrodes(DynamicTable):
|
class ExtracellularEphysElectrodes(DynamicTable):
|
||||||
|
@ -525,8 +528,14 @@ class ExtracellularEphysElectrodes(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
group: List[ElectrodeGroup] = Field(
|
group: VectorData[NDArray[Any, ElectrodeGroup]] = Field(
|
||||||
..., description="""Reference to the ElectrodeGroup this electrode is a part of."""
|
...,
|
||||||
|
description="""Reference to the ElectrodeGroup this electrode is a part of.""",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {
|
||||||
|
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
||||||
|
}
|
||||||
|
},
|
||||||
)
|
)
|
||||||
group_name: VectorData[NDArray[Any, str]] = Field(
|
group_name: VectorData[NDArray[Any, str]] = Field(
|
||||||
...,
|
...,
|
||||||
|
@ -583,9 +592,6 @@ class ExtracellularEphysElectrodes(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class GeneralIntracellularEphys(ConfiguredBaseModel):
|
class GeneralIntracellularEphys(ConfiguredBaseModel):
|
||||||
|
@ -608,12 +614,12 @@ class GeneralIntracellularEphys(ConfiguredBaseModel):
|
||||||
None,
|
None,
|
||||||
description="""Description of filtering used. Includes filtering type and parameters, frequency fall-off, etc. If this changes between TimeSeries, filter description should be stored as a text attribute for each TimeSeries.""",
|
description="""Description of filtering used. Includes filtering type and parameters, frequency fall-off, etc. If this changes between TimeSeries, filter description should be stored as a text attribute for each TimeSeries.""",
|
||||||
)
|
)
|
||||||
intracellular_electrode: Optional[List[IntracellularElectrode]] = Field(
|
|
||||||
None, description="""An intracellular electrode."""
|
|
||||||
)
|
|
||||||
sweep_table: Optional[SweepTable] = Field(
|
sweep_table: Optional[SweepTable] = Field(
|
||||||
None, description="""The table which groups different PatchClampSeries together."""
|
None, description="""The table which groups different PatchClampSeries together."""
|
||||||
)
|
)
|
||||||
|
value: Optional[Dict[str, IntracellularElectrode]] = Field(
|
||||||
|
None, description="""An intracellular electrode."""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class NWBFileIntervals(ConfiguredBaseModel):
|
class NWBFileIntervals(ConfiguredBaseModel):
|
||||||
|
@ -639,7 +645,7 @@ class NWBFileIntervals(ConfiguredBaseModel):
|
||||||
invalid_times: Optional[TimeIntervals] = Field(
|
invalid_times: Optional[TimeIntervals] = Field(
|
||||||
None, description="""Time intervals that should be removed from analysis."""
|
None, description="""Time intervals that should be removed from analysis."""
|
||||||
)
|
)
|
||||||
time_intervals: Optional[List[TimeIntervals]] = Field(
|
value: Optional[Dict[str, TimeIntervals]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Optional additional table(s) for describing other experimental time intervals.""",
|
description="""Optional additional table(s) for describing other experimental time intervals.""",
|
||||||
)
|
)
|
||||||
|
|
|
@ -262,11 +262,21 @@ class PatchClampSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: str = Field(
|
unit: str = Field(
|
||||||
...,
|
...,
|
||||||
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'.""",
|
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'.""",
|
||||||
)
|
)
|
||||||
value: Optional[NDArray[Shape["* num_times"], float]] = Field(
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -281,12 +291,12 @@ class CurrentClampSeries(PatchClampSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: CurrentClampSeriesData = Field(..., description="""Recorded voltage.""")
|
|
||||||
bias_current: Optional[float] = Field(None, description="""Bias current, in amps.""")
|
bias_current: Optional[float] = Field(None, description="""Bias current, in amps.""")
|
||||||
bridge_balance: Optional[float] = Field(None, description="""Bridge balance, in ohms.""")
|
bridge_balance: Optional[float] = Field(None, description="""Bridge balance, in ohms.""")
|
||||||
capacitance_compensation: Optional[float] = Field(
|
capacitance_compensation: Optional[float] = Field(
|
||||||
None, description="""Capacitance compensation, in farads."""
|
None, description="""Capacitance compensation, in farads."""
|
||||||
)
|
)
|
||||||
|
data: CurrentClampSeriesData = Field(..., description="""Recorded voltage.""")
|
||||||
stimulus_description: str = Field(
|
stimulus_description: str = Field(
|
||||||
..., description="""Protocol/stimulus name for this patch-clamp dataset."""
|
..., description="""Protocol/stimulus name for this patch-clamp dataset."""
|
||||||
)
|
)
|
||||||
|
@ -354,12 +364,24 @@ class CurrentClampSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Literal["volts"] = Field(
|
unit: Literal["volts"] = Field(
|
||||||
"volts",
|
"volts",
|
||||||
description="""Base unit of measurement for working with the data. which is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
description="""Base unit of measurement for working with the data. which is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
)
|
)
|
||||||
value: Any = Field(...)
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class IZeroClampSeries(CurrentClampSeries):
|
class IZeroClampSeries(CurrentClampSeries):
|
||||||
|
@ -512,6 +534,16 @@ class CurrentClampStimulusSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Literal["amperes"] = Field(
|
unit: Literal["amperes"] = Field(
|
||||||
"amperes",
|
"amperes",
|
||||||
description="""Base unit of measurement for working with the data. which is fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
description="""Base unit of measurement for working with the data. which is fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
|
@ -519,7 +551,9 @@ class CurrentClampStimulusSeriesData(ConfiguredBaseModel):
|
||||||
"linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"}
|
"linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
value: Any = Field(...)
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class VoltageClampSeries(PatchClampSeries):
|
class VoltageClampSeries(PatchClampSeries):
|
||||||
|
@ -532,13 +566,13 @@ class VoltageClampSeries(PatchClampSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: VoltageClampSeriesData = Field(..., description="""Recorded current.""")
|
|
||||||
capacitance_fast: Optional[VoltageClampSeriesCapacitanceFast] = Field(
|
capacitance_fast: Optional[VoltageClampSeriesCapacitanceFast] = Field(
|
||||||
None, description="""Fast capacitance, in farads."""
|
None, description="""Fast capacitance, in farads."""
|
||||||
)
|
)
|
||||||
capacitance_slow: Optional[VoltageClampSeriesCapacitanceSlow] = Field(
|
capacitance_slow: Optional[VoltageClampSeriesCapacitanceSlow] = Field(
|
||||||
None, description="""Slow capacitance, in farads."""
|
None, description="""Slow capacitance, in farads."""
|
||||||
)
|
)
|
||||||
|
data: VoltageClampSeriesData = Field(..., description="""Recorded current.""")
|
||||||
resistance_comp_bandwidth: Optional[VoltageClampSeriesResistanceCompBandwidth] = Field(
|
resistance_comp_bandwidth: Optional[VoltageClampSeriesResistanceCompBandwidth] = Field(
|
||||||
None, description="""Resistance compensation bandwidth, in hertz."""
|
None, description="""Resistance compensation bandwidth, in hertz."""
|
||||||
)
|
)
|
||||||
|
@ -610,27 +644,6 @@ class VoltageClampSeries(PatchClampSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class VoltageClampSeriesData(ConfiguredBaseModel):
|
|
||||||
"""
|
|
||||||
Recorded current.
|
|
||||||
"""
|
|
||||||
|
|
||||||
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.icephys"})
|
|
||||||
|
|
||||||
name: Literal["data"] = Field(
|
|
||||||
"data",
|
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
|
||||||
)
|
|
||||||
unit: Literal["amperes"] = Field(
|
|
||||||
"amperes",
|
|
||||||
description="""Base unit of measurement for working with the data. which is fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
|
||||||
json_schema_extra={
|
|
||||||
"linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"}
|
|
||||||
},
|
|
||||||
)
|
|
||||||
value: Any = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class VoltageClampSeriesCapacitanceFast(ConfiguredBaseModel):
|
class VoltageClampSeriesCapacitanceFast(ConfiguredBaseModel):
|
||||||
"""
|
"""
|
||||||
Fast capacitance, in farads.
|
Fast capacitance, in farads.
|
||||||
|
@ -683,6 +696,39 @@ class VoltageClampSeriesCapacitanceSlow(ConfiguredBaseModel):
|
||||||
value: float = Field(...)
|
value: float = Field(...)
|
||||||
|
|
||||||
|
|
||||||
|
class VoltageClampSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Recorded current.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.icephys"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["amperes"] = Field(
|
||||||
|
"amperes",
|
||||||
|
description="""Base unit of measurement for working with the data. which is fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class VoltageClampSeriesResistanceCompBandwidth(ConfiguredBaseModel):
|
class VoltageClampSeriesResistanceCompBandwidth(ConfiguredBaseModel):
|
||||||
"""
|
"""
|
||||||
Resistance compensation bandwidth, in hertz.
|
Resistance compensation bandwidth, in hertz.
|
||||||
|
@ -887,12 +933,24 @@ class VoltageClampStimulusSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Literal["volts"] = Field(
|
unit: Literal["volts"] = Field(
|
||||||
"volts",
|
"volts",
|
||||||
description="""Base unit of measurement for working with the data. which is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
description="""Base unit of measurement for working with the data. which is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
)
|
)
|
||||||
value: Any = Field(...)
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class IntracellularElectrode(NWBContainer):
|
class IntracellularElectrode(NWBContainer):
|
||||||
|
@ -942,18 +1000,15 @@ class SweepTable(DynamicTable):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
sweep_number: VectorData[NDArray[Any, int]] = Field(
|
series: VectorData[NDArray[Any, PatchClampSeries]] = Field(
|
||||||
...,
|
...,
|
||||||
description="""Sweep number of the PatchClampSeries in that row.""",
|
description="""The PatchClampSeries with the sweep number in that row.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
series: List[PatchClampSeries] = Field(
|
|
||||||
..., description="""The PatchClampSeries with the sweep number in that row."""
|
|
||||||
)
|
|
||||||
series_index: Named[VectorIndex] = Field(
|
series_index: Named[VectorIndex] = Field(
|
||||||
...,
|
...,
|
||||||
description="""Index for series.""",
|
description="""Index for series.""",
|
||||||
|
@ -966,6 +1021,15 @@ class SweepTable(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
sweep_number: VectorData[NDArray[Any, int]] = Field(
|
||||||
|
...,
|
||||||
|
description="""Sweep number of the PatchClampSeries in that row.""",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {
|
||||||
|
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
)
|
||||||
colnames: List[str] = Field(
|
colnames: List[str] = Field(
|
||||||
...,
|
...,
|
||||||
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
|
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
|
||||||
|
@ -976,9 +1040,6 @@ class SweepTable(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
|
@ -991,9 +1052,9 @@ IZeroClampSeries.model_rebuild()
|
||||||
CurrentClampStimulusSeries.model_rebuild()
|
CurrentClampStimulusSeries.model_rebuild()
|
||||||
CurrentClampStimulusSeriesData.model_rebuild()
|
CurrentClampStimulusSeriesData.model_rebuild()
|
||||||
VoltageClampSeries.model_rebuild()
|
VoltageClampSeries.model_rebuild()
|
||||||
VoltageClampSeriesData.model_rebuild()
|
|
||||||
VoltageClampSeriesCapacitanceFast.model_rebuild()
|
VoltageClampSeriesCapacitanceFast.model_rebuild()
|
||||||
VoltageClampSeriesCapacitanceSlow.model_rebuild()
|
VoltageClampSeriesCapacitanceSlow.model_rebuild()
|
||||||
|
VoltageClampSeriesData.model_rebuild()
|
||||||
VoltageClampSeriesResistanceCompBandwidth.model_rebuild()
|
VoltageClampSeriesResistanceCompBandwidth.model_rebuild()
|
||||||
VoltageClampSeriesResistanceCompCorrection.model_rebuild()
|
VoltageClampSeriesResistanceCompCorrection.model_rebuild()
|
||||||
VoltageClampSeriesResistanceCompPrediction.model_rebuild()
|
VoltageClampSeriesResistanceCompPrediction.model_rebuild()
|
||||||
|
|
|
@ -152,7 +152,7 @@ class GrayscaleImage(Image):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
value: Optional[NDArray[Shape["* x, * y"], float]] = Field(
|
value: Optional[NDArray[Shape["* x, * y"], float | int]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"array": {"dimensions": [{"alias": "x"}, {"alias": "y"}]}}
|
"linkml_meta": {"array": {"dimensions": [{"alias": "x"}, {"alias": "y"}]}}
|
||||||
|
@ -174,7 +174,7 @@ class RGBImage(Image):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
value: Optional[NDArray[Shape["* x, * y, 3 r_g_b"], float]] = Field(
|
value: Optional[NDArray[Shape["* x, * y, 3 r_g_b"], float | int]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
|
@ -204,7 +204,7 @@ class RGBAImage(Image):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
value: Optional[NDArray[Shape["* x, * y, 4 r_g_b_a"], float]] = Field(
|
value: Optional[NDArray[Shape["* x, * y, 4 r_g_b_a"], float | int]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
|
@ -234,12 +234,9 @@ class ImageSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: Optional[
|
data: Optional[ImageSeriesData] = Field(
|
||||||
Union[
|
None, description="""Binary data representing images across frames."""
|
||||||
NDArray[Shape["* frame, * x, * y"], float],
|
)
|
||||||
NDArray[Shape["* frame, * x, * y, * z"], float],
|
|
||||||
]
|
|
||||||
] = Field(None, description="""Binary data representing images across frames.""")
|
|
||||||
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Number of pixels on x, y, (and z) axes.""",
|
description="""Number of pixels on x, y, (and z) axes.""",
|
||||||
|
@ -250,8 +247,9 @@ class ImageSeries(TimeSeries):
|
||||||
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
||||||
)
|
)
|
||||||
format: Optional[str] = Field(
|
format: Optional[str] = Field(
|
||||||
None,
|
"raw",
|
||||||
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="""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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(raw)"}},
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -290,6 +288,39 @@ class ImageSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ImageSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Binary data representing images across frames.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.image"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: str = Field(
|
||||||
|
...,
|
||||||
|
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'.""",
|
||||||
|
)
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* frame, * x, * y"], float | int],
|
||||||
|
NDArray[Shape["* frame, * x, * y, * z"], float | int],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class ImageSeriesExternalFile(ConfiguredBaseModel):
|
class ImageSeriesExternalFile(ConfiguredBaseModel):
|
||||||
"""
|
"""
|
||||||
Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.
|
Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.
|
||||||
|
@ -331,12 +362,9 @@ class ImageMaskSeries(ImageSeries):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
data: Optional[
|
data: Optional[ImageSeriesData] = Field(
|
||||||
Union[
|
None, description="""Binary data representing images across frames."""
|
||||||
NDArray[Shape["* frame, * x, * y"], float],
|
)
|
||||||
NDArray[Shape["* frame, * x, * y, * z"], float],
|
|
||||||
]
|
|
||||||
] = Field(None, description="""Binary data representing images across frames.""")
|
|
||||||
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Number of pixels on x, y, (and z) axes.""",
|
description="""Number of pixels on x, y, (and z) axes.""",
|
||||||
|
@ -347,8 +375,9 @@ class ImageMaskSeries(ImageSeries):
|
||||||
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
||||||
)
|
)
|
||||||
format: Optional[str] = Field(
|
format: Optional[str] = Field(
|
||||||
None,
|
"raw",
|
||||||
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="""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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(raw)"}},
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -409,12 +438,9 @@ class OpticalSeries(ImageSeries):
|
||||||
None,
|
None,
|
||||||
description="""Description of image relative to some reference frame (e.g., which way is up). Must also specify frame of reference.""",
|
description="""Description of image relative to some reference frame (e.g., which way is up). Must also specify frame of reference.""",
|
||||||
)
|
)
|
||||||
data: Optional[
|
data: Optional[ImageSeriesData] = Field(
|
||||||
Union[
|
None, description="""Binary data representing images across frames."""
|
||||||
NDArray[Shape["* frame, * x, * y"], float],
|
)
|
||||||
NDArray[Shape["* frame, * x, * y, * z"], float],
|
|
||||||
]
|
|
||||||
] = Field(None, description="""Binary data representing images across frames.""")
|
|
||||||
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Number of pixels on x, y, (and z) axes.""",
|
description="""Number of pixels on x, y, (and z) axes.""",
|
||||||
|
@ -425,8 +451,9 @@ class OpticalSeries(ImageSeries):
|
||||||
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
||||||
)
|
)
|
||||||
format: Optional[str] = Field(
|
format: Optional[str] = Field(
|
||||||
None,
|
"raw",
|
||||||
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="""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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(raw)"}},
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -475,10 +502,8 @@ class IndexSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: NDArray[Shape["* num_times"], int] = Field(
|
data: IndexSeriesData = Field(
|
||||||
...,
|
..., description="""Index of the frame in the referenced ImageSeries."""
|
||||||
description="""Index of the frame in the referenced ImageSeries.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
|
||||||
)
|
)
|
||||||
indexed_timeseries: Union[ImageSeries, str] = Field(
|
indexed_timeseries: Union[ImageSeries, str] = Field(
|
||||||
...,
|
...,
|
||||||
|
@ -526,13 +551,45 @@ class IndexSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class IndexSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Index of the frame in the referenced ImageSeries.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.image"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: str = Field(
|
||||||
|
...,
|
||||||
|
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'.""",
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
GrayscaleImage.model_rebuild()
|
GrayscaleImage.model_rebuild()
|
||||||
RGBImage.model_rebuild()
|
RGBImage.model_rebuild()
|
||||||
RGBAImage.model_rebuild()
|
RGBAImage.model_rebuild()
|
||||||
ImageSeries.model_rebuild()
|
ImageSeries.model_rebuild()
|
||||||
|
ImageSeriesData.model_rebuild()
|
||||||
ImageSeriesExternalFile.model_rebuild()
|
ImageSeriesExternalFile.model_rebuild()
|
||||||
ImageMaskSeries.model_rebuild()
|
ImageMaskSeries.model_rebuild()
|
||||||
OpticalSeries.model_rebuild()
|
OpticalSeries.model_rebuild()
|
||||||
IndexSeries.model_rebuild()
|
IndexSeries.model_rebuild()
|
||||||
|
IndexSeriesData.model_rebuild()
|
||||||
|
|
|
@ -251,6 +251,16 @@ class AbstractFeatureSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Optional[str] = Field(
|
unit: Optional[str] = Field(
|
||||||
"see ",
|
"see ",
|
||||||
description="""Since there can be different units for different features, store the units in 'feature_units'. The default value for this attribute is \"see 'feature_units'\".""",
|
description="""Since there can be different units for different features, store the units in 'feature_units'. The default value for this attribute is \"see 'feature_units'\".""",
|
||||||
|
@ -258,8 +268,8 @@ class AbstractFeatureSeriesData(ConfiguredBaseModel):
|
||||||
)
|
)
|
||||||
value: Optional[
|
value: Optional[
|
||||||
Union[
|
Union[
|
||||||
NDArray[Shape["* num_times"], float],
|
NDArray[Shape["* num_times"], float | int],
|
||||||
NDArray[Shape["* num_times, * num_features"], float],
|
NDArray[Shape["* num_times, * num_features"], float | int],
|
||||||
]
|
]
|
||||||
] = Field(None)
|
] = Field(None)
|
||||||
|
|
||||||
|
@ -274,10 +284,8 @@ class AnnotationSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: NDArray[Shape["* num_times"], str] = Field(
|
data: AnnotationSeriesData = Field(
|
||||||
...,
|
..., description="""Annotations made during an experiment."""
|
||||||
description="""Annotations made during an experiment.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -316,6 +324,39 @@ class AnnotationSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class AnnotationSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Annotations made during an experiment.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.misc"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: float = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data. Annotations have no units, so the value is fixed to -1.0.""",
|
||||||
|
le=-1,
|
||||||
|
ge=-1,
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["n/a"] = Field(
|
||||||
|
"n/a",
|
||||||
|
description="""Base unit of measurement for working with the data. Annotations have no units, so the value is fixed to 'n/a'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "n/a", "ifabsent": "string(n/a)"}},
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], str]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class IntervalSeries(TimeSeries):
|
class IntervalSeries(TimeSeries):
|
||||||
"""
|
"""
|
||||||
Stores intervals of data. The timestamps field stores the beginning and end of intervals. The data field stores whether the interval just started (>0 value) or ended (<0 value). Different interval types can be represented in the same series by using multiple key values (eg, 1 for feature A, 2 for feature B, 3 for feature C, etc). The field data stores an 8-bit integer. This is largely an alias of a standard TimeSeries but that is identifiable as representing time intervals in a machine-readable way.
|
Stores intervals of data. The timestamps field stores the beginning and end of intervals. The data field stores whether the interval just started (>0 value) or ended (<0 value). Different interval types can be represented in the same series by using multiple key values (eg, 1 for feature A, 2 for feature B, 3 for feature C, etc). The field data stores an 8-bit integer. This is largely an alias of a standard TimeSeries but that is identifiable as representing time intervals in a machine-readable way.
|
||||||
|
@ -326,10 +367,8 @@ class IntervalSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: NDArray[Shape["* num_times"], int] = Field(
|
data: IntervalSeriesData = Field(
|
||||||
...,
|
..., description="""Use values >0 if interval started, <0 if interval ended."""
|
||||||
description="""Use values >0 if interval started, <0 if interval ended.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -368,6 +407,39 @@ class IntervalSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class IntervalSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Use values >0 if interval started, <0 if interval ended.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.misc"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: float = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data. Annotations have no units, so the value is fixed to -1.0.""",
|
||||||
|
le=-1,
|
||||||
|
ge=-1,
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["n/a"] = Field(
|
||||||
|
"n/a",
|
||||||
|
description="""Base unit of measurement for working with the data. Annotations have no units, so the value is fixed to 'n/a'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "n/a", "ifabsent": "string(n/a)"}},
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class DecompositionSeries(TimeSeries):
|
class DecompositionSeries(TimeSeries):
|
||||||
"""
|
"""
|
||||||
Spectral analysis of a time series, e.g. of an LFP or a speech signal.
|
Spectral analysis of a time series, e.g. of an LFP or a speech signal.
|
||||||
|
@ -443,24 +515,36 @@ class DecompositionSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: str = Field(
|
unit: str = Field(
|
||||||
"no unit",
|
"no unit",
|
||||||
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'.""",
|
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'.""",
|
||||||
json_schema_extra={"linkml_meta": {"ifabsent": "string(no unit)"}},
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(no unit)"}},
|
||||||
)
|
)
|
||||||
value: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float]] = Field(
|
value: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float | int]] = (
|
||||||
None,
|
Field(
|
||||||
json_schema_extra={
|
None,
|
||||||
"linkml_meta": {
|
json_schema_extra={
|
||||||
"array": {
|
"linkml_meta": {
|
||||||
"dimensions": [
|
"array": {
|
||||||
{"alias": "num_times"},
|
"dimensions": [
|
||||||
{"alias": "num_channels"},
|
{"alias": "num_times"},
|
||||||
{"alias": "num_bands"},
|
{"alias": "num_channels"},
|
||||||
]
|
{"alias": "num_bands"},
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
},
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -518,9 +602,6 @@ class DecompositionSeriesBands(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class Units(DynamicTable):
|
class Units(DynamicTable):
|
||||||
|
@ -533,9 +614,18 @@ class Units(DynamicTable):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field("Units", json_schema_extra={"linkml_meta": {"ifabsent": "string(Units)"}})
|
name: str = Field("Units", json_schema_extra={"linkml_meta": {"ifabsent": "string(Units)"}})
|
||||||
spike_times_index: Optional[Named[VectorIndex]] = Field(
|
electrode_group: Optional[VectorData[NDArray[Any, ElectrodeGroup]]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Index into the spike_times dataset.""",
|
description="""Electrode group that each spike unit came from.""",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {
|
||||||
|
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
electrodes: Optional[Named[DynamicTableRegion]] = Field(
|
||||||
|
None,
|
||||||
|
description="""Electrode that each spike unit came from, specified using a DynamicTableRegion.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"annotations": {
|
"annotations": {
|
||||||
|
@ -545,12 +635,9 @@ class Units(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
spike_times: Optional[UnitsSpikeTimes] = Field(
|
electrodes_index: Optional[Named[VectorIndex]] = Field(
|
||||||
None, description="""Spike times for each unit."""
|
|
||||||
)
|
|
||||||
obs_intervals_index: Optional[Named[VectorIndex]] = Field(
|
|
||||||
None,
|
None,
|
||||||
description="""Index into the obs_intervals dataset.""",
|
description="""Index into electrodes.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"annotations": {
|
"annotations": {
|
||||||
|
@ -576,9 +663,9 @@ class Units(DynamicTable):
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
electrodes_index: Optional[Named[VectorIndex]] = Field(
|
obs_intervals_index: Optional[Named[VectorIndex]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Index into electrodes.""",
|
description="""Index into the obs_intervals dataset.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"annotations": {
|
"annotations": {
|
||||||
|
@ -588,9 +675,12 @@ class Units(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
electrodes: Optional[Named[DynamicTableRegion]] = Field(
|
spike_times: Optional[UnitsSpikeTimes] = Field(
|
||||||
|
None, description="""Spike times for each unit."""
|
||||||
|
)
|
||||||
|
spike_times_index: Optional[Named[VectorIndex]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Electrode that each spike unit came from, specified using a DynamicTableRegion.""",
|
description="""Index into the spike_times dataset.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"annotations": {
|
"annotations": {
|
||||||
|
@ -600,25 +690,12 @@ class Units(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
electrode_group: Optional[List[ElectrodeGroup]] = Field(
|
waveform_mean: Optional[UnitsWaveformMean] = Field(
|
||||||
None, description="""Electrode group that each spike unit came from."""
|
None, description="""Spike waveform mean for each spike unit."""
|
||||||
|
)
|
||||||
|
waveform_sd: Optional[UnitsWaveformSd] = Field(
|
||||||
|
None, description="""Spike waveform standard deviation for each spike unit."""
|
||||||
)
|
)
|
||||||
waveform_mean: Optional[
|
|
||||||
VectorData[
|
|
||||||
Union[
|
|
||||||
NDArray[Shape["* num_units, * num_samples"], float],
|
|
||||||
NDArray[Shape["* num_units, * num_samples, * num_electrodes"], float],
|
|
||||||
]
|
|
||||||
]
|
|
||||||
] = Field(None, description="""Spike waveform mean for each spike unit.""")
|
|
||||||
waveform_sd: Optional[
|
|
||||||
VectorData[
|
|
||||||
Union[
|
|
||||||
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.""")
|
|
||||||
colnames: List[str] = Field(
|
colnames: List[str] = Field(
|
||||||
...,
|
...,
|
||||||
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
|
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
|
||||||
|
@ -629,9 +706,6 @@ class Units(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class UnitsSpikeTimes(VectorData):
|
class UnitsSpikeTimes(VectorData):
|
||||||
|
@ -654,14 +728,62 @@ class UnitsSpikeTimes(VectorData):
|
||||||
description: str = Field(..., description="""Description of what these vectors represent.""")
|
description: str = Field(..., description="""Description of what these vectors represent.""")
|
||||||
|
|
||||||
|
|
||||||
|
class UnitsWaveformMean(VectorData):
|
||||||
|
"""
|
||||||
|
Spike waveform mean for each spike unit.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.misc"})
|
||||||
|
|
||||||
|
name: Literal["waveform_mean"] = Field(
|
||||||
|
"waveform_mean",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {"equals_string": "waveform_mean", "ifabsent": "string(waveform_mean)"}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
sampling_rate: Optional[float] = Field(None, description="""Sampling rate, in hertz.""")
|
||||||
|
unit: Optional[Literal["volts"]] = Field(
|
||||||
|
"volts",
|
||||||
|
description="""Unit of measurement. This value is fixed to 'volts'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
|
)
|
||||||
|
description: str = Field(..., description="""Description of what these vectors represent.""")
|
||||||
|
|
||||||
|
|
||||||
|
class UnitsWaveformSd(VectorData):
|
||||||
|
"""
|
||||||
|
Spike waveform standard deviation for each spike unit.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.misc"})
|
||||||
|
|
||||||
|
name: Literal["waveform_sd"] = Field(
|
||||||
|
"waveform_sd",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {"equals_string": "waveform_sd", "ifabsent": "string(waveform_sd)"}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
sampling_rate: Optional[float] = Field(None, description="""Sampling rate, in hertz.""")
|
||||||
|
unit: Optional[Literal["volts"]] = Field(
|
||||||
|
"volts",
|
||||||
|
description="""Unit of measurement. This value is fixed to 'volts'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
|
)
|
||||||
|
description: str = Field(..., description="""Description of what these vectors represent.""")
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
AbstractFeatureSeries.model_rebuild()
|
AbstractFeatureSeries.model_rebuild()
|
||||||
AbstractFeatureSeriesData.model_rebuild()
|
AbstractFeatureSeriesData.model_rebuild()
|
||||||
AnnotationSeries.model_rebuild()
|
AnnotationSeries.model_rebuild()
|
||||||
|
AnnotationSeriesData.model_rebuild()
|
||||||
IntervalSeries.model_rebuild()
|
IntervalSeries.model_rebuild()
|
||||||
|
IntervalSeriesData.model_rebuild()
|
||||||
DecompositionSeries.model_rebuild()
|
DecompositionSeries.model_rebuild()
|
||||||
DecompositionSeriesData.model_rebuild()
|
DecompositionSeriesData.model_rebuild()
|
||||||
DecompositionSeriesBands.model_rebuild()
|
DecompositionSeriesBands.model_rebuild()
|
||||||
Units.model_rebuild()
|
Units.model_rebuild()
|
||||||
UnitsSpikeTimes.model_rebuild()
|
UnitsSpikeTimes.model_rebuild()
|
||||||
|
UnitsWaveformMean.model_rebuild()
|
||||||
|
UnitsWaveformSd.model_rebuild()
|
||||||
|
|
|
@ -158,10 +158,8 @@ class OptogeneticSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: NDArray[Shape["* num_times"], float] = Field(
|
data: OptogeneticSeriesData = Field(
|
||||||
...,
|
..., description="""Applied power for optogenetic stimulus, in watts."""
|
||||||
description="""Applied power for optogenetic stimulus, in watts.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
|
||||||
)
|
)
|
||||||
site: Union[OptogeneticStimulusSite, str] = Field(
|
site: Union[OptogeneticStimulusSite, str] = Field(
|
||||||
...,
|
...,
|
||||||
|
@ -209,6 +207,37 @@ class OptogeneticSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class OptogeneticSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Applied power for optogenetic stimulus, in watts.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.ogen"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["watts"] = Field(
|
||||||
|
"watts",
|
||||||
|
description="""Unit of measurement for data, which is fixed to 'watts'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "watts", "ifabsent": "string(watts)"}},
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class OptogeneticStimulusSite(NWBContainer):
|
class OptogeneticStimulusSite(NWBContainer):
|
||||||
"""
|
"""
|
||||||
A site of optogenetic stimulation.
|
A site of optogenetic stimulation.
|
||||||
|
@ -239,4 +268,5 @@ class OptogeneticStimulusSite(NWBContainer):
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
OptogeneticSeries.model_rebuild()
|
OptogeneticSeries.model_rebuild()
|
||||||
|
OptogeneticSeriesData.model_rebuild()
|
||||||
OptogeneticStimulusSite.model_rebuild()
|
OptogeneticStimulusSite.model_rebuild()
|
||||||
|
|
|
@ -28,7 +28,7 @@ from ...core.v2_2_0.core_nwb_base import (
|
||||||
TimeSeriesSync,
|
TimeSeriesSync,
|
||||||
)
|
)
|
||||||
from ...core.v2_2_0.core_nwb_device import Device
|
from ...core.v2_2_0.core_nwb_device import Device
|
||||||
from ...core.v2_2_0.core_nwb_image import ImageSeries, ImageSeriesExternalFile
|
from ...core.v2_2_0.core_nwb_image import ImageSeries, ImageSeriesData, ImageSeriesExternalFile
|
||||||
from ...hdmf_common.v1_1_0.hdmf_common_table import DynamicTable, DynamicTableRegion
|
from ...hdmf_common.v1_1_0.hdmf_common_table import DynamicTable, DynamicTableRegion
|
||||||
|
|
||||||
|
|
||||||
|
@ -209,12 +209,9 @@ class TwoPhotonSeries(ImageSeries):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
data: Optional[
|
data: Optional[ImageSeriesData] = Field(
|
||||||
Union[
|
None, description="""Binary data representing images across frames."""
|
||||||
NDArray[Shape["* frame, * x, * y"], float],
|
)
|
||||||
NDArray[Shape["* frame, * x, * y, * z"], float],
|
|
||||||
]
|
|
||||||
] = Field(None, description="""Binary data representing images across frames.""")
|
|
||||||
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Number of pixels on x, y, (and z) axes.""",
|
description="""Number of pixels on x, y, (and z) axes.""",
|
||||||
|
@ -225,8 +222,9 @@ class TwoPhotonSeries(ImageSeries):
|
||||||
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
||||||
)
|
)
|
||||||
format: Optional[str] = Field(
|
format: Optional[str] = Field(
|
||||||
None,
|
"raw",
|
||||||
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="""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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(raw)"}},
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -275,9 +273,7 @@ class RoiResponseSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: Union[
|
data: RoiResponseSeriesData = Field(..., description="""Signals from ROIs.""")
|
||||||
NDArray[Shape["* num_times"], float], NDArray[Shape["* num_times, * num_rois"], float]
|
|
||||||
] = Field(..., description="""Signals from ROIs.""")
|
|
||||||
rois: Named[DynamicTableRegion] = Field(
|
rois: Named[DynamicTableRegion] = Field(
|
||||||
...,
|
...,
|
||||||
description="""DynamicTableRegion referencing into an ROITable containing information on the ROIs stored in this timeseries.""",
|
description="""DynamicTableRegion referencing into an ROITable containing information on the ROIs stored in this timeseries.""",
|
||||||
|
@ -327,6 +323,39 @@ class RoiResponseSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class RoiResponseSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Signals from ROIs.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.ophys"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: str = Field(
|
||||||
|
...,
|
||||||
|
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'.""",
|
||||||
|
)
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* num_times"], float | int],
|
||||||
|
NDArray[Shape["* num_times, * num_rois"], float | int],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class DfOverF(NWBDataInterface):
|
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).
|
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).
|
||||||
|
@ -336,10 +365,10 @@ class DfOverF(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[RoiResponseSeries]] = Field(
|
name: str = Field("DfOverF", json_schema_extra={"linkml_meta": {"ifabsent": "string(DfOverF)"}})
|
||||||
|
value: Optional[Dict[str, RoiResponseSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "RoiResponseSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "RoiResponseSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class Fluorescence(NWBDataInterface):
|
class Fluorescence(NWBDataInterface):
|
||||||
|
@ -351,10 +380,12 @@ class Fluorescence(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[RoiResponseSeries]] = Field(
|
name: str = Field(
|
||||||
|
"Fluorescence", json_schema_extra={"linkml_meta": {"ifabsent": "string(Fluorescence)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, RoiResponseSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "RoiResponseSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "RoiResponseSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class ImageSegmentation(NWBDataInterface):
|
class ImageSegmentation(NWBDataInterface):
|
||||||
|
@ -366,10 +397,13 @@ class ImageSegmentation(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[DynamicTable]] = Field(
|
name: str = Field(
|
||||||
|
"ImageSegmentation",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(ImageSegmentation)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, DynamicTable]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "DynamicTable"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "DynamicTable"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class ImagingPlane(NWBContainer):
|
class ImagingPlane(NWBContainer):
|
||||||
|
@ -538,16 +572,20 @@ class MotionCorrection(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[NWBDataInterface]] = Field(
|
name: str = Field(
|
||||||
|
"MotionCorrection",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(MotionCorrection)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, NWBDataInterface]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
TwoPhotonSeries.model_rebuild()
|
TwoPhotonSeries.model_rebuild()
|
||||||
RoiResponseSeries.model_rebuild()
|
RoiResponseSeries.model_rebuild()
|
||||||
|
RoiResponseSeriesData.model_rebuild()
|
||||||
DfOverF.model_rebuild()
|
DfOverF.model_rebuild()
|
||||||
Fluorescence.model_rebuild()
|
Fluorescence.model_rebuild()
|
||||||
ImageSegmentation.model_rebuild()
|
ImageSegmentation.model_rebuild()
|
||||||
|
|
|
@ -235,7 +235,7 @@ class RetinotopyImage(GrayscaleImage):
|
||||||
)
|
)
|
||||||
field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""")
|
field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""")
|
||||||
format: str = Field(..., description="""Format of image. Right now only 'raw' is supported.""")
|
format: str = Field(..., description="""Format of image. Right now only 'raw' is supported.""")
|
||||||
value: Optional[NDArray[Shape["* x, * y"], float]] = Field(
|
value: Optional[NDArray[Shape["* x, * y"], float | int]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"array": {"dimensions": [{"alias": "x"}, {"alias": "y"}]}}
|
"linkml_meta": {"array": {"dimensions": [{"alias": "x"}, {"alias": "y"}]}}
|
||||||
|
@ -374,7 +374,7 @@ class ImagingRetinotopyFocalDepthImage(RetinotopyImage):
|
||||||
)
|
)
|
||||||
field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""")
|
field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""")
|
||||||
format: str = Field(..., description="""Format of image. Right now only 'raw' is supported.""")
|
format: str = Field(..., description="""Format of image. Right now only 'raw' is supported.""")
|
||||||
value: Optional[NDArray[Shape["* x, * y"], float]] = Field(
|
value: Optional[NDArray[Shape["* x, * y"], float | int]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"array": {"dimensions": [{"alias": "x"}, {"alias": "y"}]}}
|
"linkml_meta": {"array": {"dimensions": [{"alias": "x"}, {"alias": "y"}]}}
|
||||||
|
|
|
@ -38,6 +38,7 @@ from ...core.v2_2_0.core_nwb_ecephys import (
|
||||||
ClusterWaveforms,
|
ClusterWaveforms,
|
||||||
Clustering,
|
Clustering,
|
||||||
ElectricalSeries,
|
ElectricalSeries,
|
||||||
|
ElectricalSeriesData,
|
||||||
ElectrodeGroup,
|
ElectrodeGroup,
|
||||||
ElectrodeGroupPosition,
|
ElectrodeGroupPosition,
|
||||||
EventDetection,
|
EventDetection,
|
||||||
|
@ -46,6 +47,7 @@ from ...core.v2_2_0.core_nwb_ecephys import (
|
||||||
FilteredEphys,
|
FilteredEphys,
|
||||||
LFP,
|
LFP,
|
||||||
SpikeEventSeries,
|
SpikeEventSeries,
|
||||||
|
SpikeEventSeriesData,
|
||||||
)
|
)
|
||||||
from ...core.v2_2_0.core_nwb_epoch import TimeIntervals, TimeIntervalsTimeseries
|
from ...core.v2_2_0.core_nwb_epoch import TimeIntervals, TimeIntervalsTimeseries
|
||||||
from ...core.v2_2_0.core_nwb_file import (
|
from ...core.v2_2_0.core_nwb_file import (
|
||||||
|
@ -85,8 +87,10 @@ from ...core.v2_2_0.core_nwb_image import (
|
||||||
GrayscaleImage,
|
GrayscaleImage,
|
||||||
ImageMaskSeries,
|
ImageMaskSeries,
|
||||||
ImageSeries,
|
ImageSeries,
|
||||||
|
ImageSeriesData,
|
||||||
ImageSeriesExternalFile,
|
ImageSeriesExternalFile,
|
||||||
IndexSeries,
|
IndexSeries,
|
||||||
|
IndexSeriesData,
|
||||||
OpticalSeries,
|
OpticalSeries,
|
||||||
RGBAImage,
|
RGBAImage,
|
||||||
RGBImage,
|
RGBImage,
|
||||||
|
@ -95,14 +99,22 @@ from ...core.v2_2_0.core_nwb_misc import (
|
||||||
AbstractFeatureSeries,
|
AbstractFeatureSeries,
|
||||||
AbstractFeatureSeriesData,
|
AbstractFeatureSeriesData,
|
||||||
AnnotationSeries,
|
AnnotationSeries,
|
||||||
|
AnnotationSeriesData,
|
||||||
DecompositionSeries,
|
DecompositionSeries,
|
||||||
DecompositionSeriesBands,
|
DecompositionSeriesBands,
|
||||||
DecompositionSeriesData,
|
DecompositionSeriesData,
|
||||||
IntervalSeries,
|
IntervalSeries,
|
||||||
|
IntervalSeriesData,
|
||||||
Units,
|
Units,
|
||||||
UnitsSpikeTimes,
|
UnitsSpikeTimes,
|
||||||
|
UnitsWaveformMean,
|
||||||
|
UnitsWaveformSd,
|
||||||
|
)
|
||||||
|
from ...core.v2_2_0.core_nwb_ogen import (
|
||||||
|
OptogeneticSeries,
|
||||||
|
OptogeneticSeriesData,
|
||||||
|
OptogeneticStimulusSite,
|
||||||
)
|
)
|
||||||
from ...core.v2_2_0.core_nwb_ogen import OptogeneticSeries, OptogeneticStimulusSite
|
|
||||||
from ...core.v2_2_0.core_nwb_ophys import (
|
from ...core.v2_2_0.core_nwb_ophys import (
|
||||||
DfOverF,
|
DfOverF,
|
||||||
Fluorescence,
|
Fluorescence,
|
||||||
|
@ -114,6 +126,7 @@ from ...core.v2_2_0.core_nwb_ophys import (
|
||||||
MotionCorrection,
|
MotionCorrection,
|
||||||
OpticalChannel,
|
OpticalChannel,
|
||||||
RoiResponseSeries,
|
RoiResponseSeries,
|
||||||
|
RoiResponseSeriesData,
|
||||||
TwoPhotonSeries,
|
TwoPhotonSeries,
|
||||||
)
|
)
|
||||||
from ...core.v2_2_0.core_nwb_retinotopy import (
|
from ...core.v2_2_0.core_nwb_retinotopy import (
|
||||||
|
|
|
@ -170,9 +170,9 @@ class Image(NWBData):
|
||||||
description: Optional[str] = Field(None, description="""Description of the image.""")
|
description: Optional[str] = Field(None, description="""Description of the image.""")
|
||||||
value: Optional[
|
value: Optional[
|
||||||
Union[
|
Union[
|
||||||
NDArray[Shape["* x, * y"], float],
|
NDArray[Shape["* x, * y"], float | int],
|
||||||
NDArray[Shape["* x, * y, 3 r_g_b"], float],
|
NDArray[Shape["* x, * y, 3 r_g_b"], float | int],
|
||||||
NDArray[Shape["* x, * y, 4 r_g_b_a"], float],
|
NDArray[Shape["* x, * y, 4 r_g_b_a"], float | int],
|
||||||
]
|
]
|
||||||
] = Field(None)
|
] = Field(None)
|
||||||
|
|
||||||
|
@ -333,13 +333,16 @@ class ProcessingModule(NWBContainer):
|
||||||
{"from_schema": "core.nwb.base", "tree_root": True}
|
{"from_schema": "core.nwb.base", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[Union[DynamicTable, NWBDataInterface]]] = Field(
|
name: str = Field(...)
|
||||||
|
description: str = Field(
|
||||||
|
..., description="""Description of this collection of processed data."""
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, Union[DynamicTable, NWBDataInterface]]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}, {"range": "DynamicTable"}]}
|
"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}, {"range": "DynamicTable"}]}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class Images(NWBDataInterface):
|
class Images(NWBDataInterface):
|
||||||
|
@ -353,7 +356,7 @@ class Images(NWBDataInterface):
|
||||||
|
|
||||||
name: str = Field("Images", json_schema_extra={"linkml_meta": {"ifabsent": "string(Images)"}})
|
name: str = Field("Images", json_schema_extra={"linkml_meta": {"ifabsent": "string(Images)"}})
|
||||||
description: str = Field(..., description="""Description of this collection of images.""")
|
description: str = Field(..., description="""Description of this collection of images.""")
|
||||||
image: List[Image] = Field(..., description="""Images stored in this collection.""")
|
image: List[str] = Field(..., description="""Images stored in this collection.""")
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
|
|
|
@ -213,6 +213,16 @@ class SpatialSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Optional[str] = Field(
|
unit: Optional[str] = Field(
|
||||||
"meters",
|
"meters",
|
||||||
description="""Base unit of measurement for working with the data. The default value is 'meters'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
description="""Base unit of measurement for working with the data. The default value is 'meters'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
|
@ -220,8 +230,8 @@ class SpatialSeriesData(ConfiguredBaseModel):
|
||||||
)
|
)
|
||||||
value: Optional[
|
value: Optional[
|
||||||
Union[
|
Union[
|
||||||
NDArray[Shape["* num_times"], float],
|
NDArray[Shape["* num_times"], float | int],
|
||||||
NDArray[Shape["* num_times, * num_features"], float],
|
NDArray[Shape["* num_times, * num_features"], float | int],
|
||||||
]
|
]
|
||||||
] = Field(None)
|
] = Field(None)
|
||||||
|
|
||||||
|
@ -235,10 +245,13 @@ class BehavioralEpochs(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[IntervalSeries]] = Field(
|
name: str = Field(
|
||||||
|
"BehavioralEpochs",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(BehavioralEpochs)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, IntervalSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "IntervalSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "IntervalSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class BehavioralEvents(NWBDataInterface):
|
class BehavioralEvents(NWBDataInterface):
|
||||||
|
@ -250,10 +263,13 @@ class BehavioralEvents(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[TimeSeries]] = Field(
|
name: str = Field(
|
||||||
|
"BehavioralEvents",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(BehavioralEvents)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class BehavioralTimeSeries(NWBDataInterface):
|
class BehavioralTimeSeries(NWBDataInterface):
|
||||||
|
@ -265,10 +281,13 @@ class BehavioralTimeSeries(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[TimeSeries]] = Field(
|
name: str = Field(
|
||||||
|
"BehavioralTimeSeries",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(BehavioralTimeSeries)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class PupilTracking(NWBDataInterface):
|
class PupilTracking(NWBDataInterface):
|
||||||
|
@ -280,10 +299,12 @@ class PupilTracking(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[TimeSeries]] = Field(
|
name: str = Field(
|
||||||
|
"PupilTracking", json_schema_extra={"linkml_meta": {"ifabsent": "string(PupilTracking)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class EyeTracking(NWBDataInterface):
|
class EyeTracking(NWBDataInterface):
|
||||||
|
@ -295,10 +316,12 @@ class EyeTracking(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[SpatialSeries]] = Field(
|
name: str = Field(
|
||||||
|
"EyeTracking", json_schema_extra={"linkml_meta": {"ifabsent": "string(EyeTracking)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, SpatialSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class CompassDirection(NWBDataInterface):
|
class CompassDirection(NWBDataInterface):
|
||||||
|
@ -310,10 +333,13 @@ class CompassDirection(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[SpatialSeries]] = Field(
|
name: str = Field(
|
||||||
|
"CompassDirection",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(CompassDirection)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, SpatialSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class Position(NWBDataInterface):
|
class Position(NWBDataInterface):
|
||||||
|
@ -325,10 +351,12 @@ class Position(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[SpatialSeries]] = Field(
|
name: str = Field(
|
||||||
|
"Position", json_schema_extra={"linkml_meta": {"ifabsent": "string(Position)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, SpatialSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
|
|
|
@ -190,11 +190,12 @@ class ElectricalSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: Union[
|
channel_conversion: Optional[NDArray[Shape["* num_channels"], float]] = Field(
|
||||||
NDArray[Shape["* num_times"], float],
|
None,
|
||||||
NDArray[Shape["* num_times, * num_channels"], float],
|
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.""",
|
||||||
NDArray[Shape["* num_times, * num_channels, * num_samples"], float],
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_channels"}]}}},
|
||||||
] = Field(..., description="""Recorded voltage data.""")
|
)
|
||||||
|
data: ElectricalSeriesData = Field(..., description="""Recorded voltage data.""")
|
||||||
electrodes: Named[DynamicTableRegion] = Field(
|
electrodes: Named[DynamicTableRegion] = Field(
|
||||||
...,
|
...,
|
||||||
description="""DynamicTableRegion pointer to the electrodes that this time series was generated from.""",
|
description="""DynamicTableRegion pointer to the electrodes that this time series was generated from.""",
|
||||||
|
@ -207,11 +208,6 @@ class ElectricalSeries(TimeSeries):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
channel_conversion: Optional[NDArray[Shape["* num_channels"], float]] = Field(
|
|
||||||
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.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_channels"}]}}},
|
|
||||||
)
|
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
description="""Description of the time series.""",
|
description="""Description of the time series.""",
|
||||||
|
@ -249,6 +245,41 @@ class ElectricalSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ElectricalSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Recorded voltage data.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.ecephys"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["volts"] = Field(
|
||||||
|
"volts",
|
||||||
|
description="""Base unit of measurement for working with the data. This value is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion' and 'channel_conversion' (if present).""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
|
)
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* num_times"], float | int],
|
||||||
|
NDArray[Shape["* num_times, * num_channels"], float | int],
|
||||||
|
NDArray[Shape["* num_times, * num_channels, * num_samples"], float | int],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class SpikeEventSeries(ElectricalSeries):
|
class SpikeEventSeries(ElectricalSeries):
|
||||||
"""
|
"""
|
||||||
Stores snapshots/snippets of recorded spike events (i.e., threshold crossings). This may also be raw data, as reported by ephys hardware. If so, the TimeSeries::description field should describe how events were detected. All SpikeEventSeries should reside in a module (under EventWaveform interface) even if the spikes were reported and stored by hardware. All events span the same recording channels and store snapshots of equal duration. TimeSeries::data array structure: [num events] [num channels] [num samples] (or [num events] [num samples] for single electrode).
|
Stores snapshots/snippets of recorded spike events (i.e., threshold crossings). This may also be raw data, as reported by ephys hardware. If so, the TimeSeries::description field should describe how events were detected. All SpikeEventSeries should reside in a module (under EventWaveform interface) even if the spikes were reported and stored by hardware. All events span the same recording channels and store snapshots of equal duration. TimeSeries::data array structure: [num events] [num channels] [num samples] (or [num events] [num samples] for single electrode).
|
||||||
|
@ -259,15 +290,17 @@ class SpikeEventSeries(ElectricalSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: Union[
|
data: SpikeEventSeriesData = Field(..., description="""Spike waveforms.""")
|
||||||
NDArray[Shape["* num_events, * num_samples"], float],
|
|
||||||
NDArray[Shape["* num_events, * num_channels, * num_samples"], float],
|
|
||||||
] = Field(..., description="""Spike waveforms.""")
|
|
||||||
timestamps: NDArray[Shape["* num_times"], float] = Field(
|
timestamps: NDArray[Shape["* num_times"], float] = Field(
|
||||||
...,
|
...,
|
||||||
description="""Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. Timestamps are required for the events. Unlike for TimeSeries, timestamps are required for SpikeEventSeries and are thus re-specified here.""",
|
description="""Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. Timestamps are required for the events. Unlike for TimeSeries, timestamps are required for SpikeEventSeries and are thus re-specified here.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
||||||
)
|
)
|
||||||
|
channel_conversion: Optional[NDArray[Shape["* num_channels"], float]] = Field(
|
||||||
|
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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_channels"}]}}},
|
||||||
|
)
|
||||||
electrodes: Named[DynamicTableRegion] = Field(
|
electrodes: Named[DynamicTableRegion] = Field(
|
||||||
...,
|
...,
|
||||||
description="""DynamicTableRegion pointer to the electrodes that this time series was generated from.""",
|
description="""DynamicTableRegion pointer to the electrodes that this time series was generated from.""",
|
||||||
|
@ -280,11 +313,6 @@ class SpikeEventSeries(ElectricalSeries):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
channel_conversion: Optional[NDArray[Shape["* num_channels"], float]] = Field(
|
|
||||||
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.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_channels"}]}}},
|
|
||||||
)
|
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
description="""Description of the time series.""",
|
description="""Description of the time series.""",
|
||||||
|
@ -317,6 +345,40 @@ class SpikeEventSeries(ElectricalSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class SpikeEventSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Spike waveforms.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.ecephys"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["volts"] = Field(
|
||||||
|
"volts",
|
||||||
|
description="""Unit of measurement for waveforms, which is fixed to 'volts'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
|
)
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* num_events, * num_samples"], float | int],
|
||||||
|
NDArray[Shape["* num_events, * num_channels, * num_samples"], float | int],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class FeatureExtraction(NWBDataInterface):
|
class FeatureExtraction(NWBDataInterface):
|
||||||
"""
|
"""
|
||||||
Features, such as PC1 and PC2, that are extracted from signals stored in a SpikeEventSeries or other source.
|
Features, such as PC1 and PC2, that are extracted from signals stored in a SpikeEventSeries or other source.
|
||||||
|
@ -415,10 +477,12 @@ class EventWaveform(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[SpikeEventSeries]] = Field(
|
name: str = Field(
|
||||||
|
"EventWaveform", json_schema_extra={"linkml_meta": {"ifabsent": "string(EventWaveform)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, SpikeEventSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpikeEventSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpikeEventSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class FilteredEphys(NWBDataInterface):
|
class FilteredEphys(NWBDataInterface):
|
||||||
|
@ -430,10 +494,12 @@ class FilteredEphys(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[ElectricalSeries]] = Field(
|
name: str = Field(
|
||||||
|
"FilteredEphys", json_schema_extra={"linkml_meta": {"ifabsent": "string(FilteredEphys)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, ElectricalSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "ElectricalSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "ElectricalSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class LFP(NWBDataInterface):
|
class LFP(NWBDataInterface):
|
||||||
|
@ -445,10 +511,10 @@ class LFP(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[ElectricalSeries]] = Field(
|
name: str = Field("LFP", json_schema_extra={"linkml_meta": {"ifabsent": "string(LFP)"}})
|
||||||
|
value: Optional[Dict[str, ElectricalSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "ElectricalSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "ElectricalSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class ElectrodeGroup(NWBContainer):
|
class ElectrodeGroup(NWBContainer):
|
||||||
|
@ -591,7 +657,9 @@ class Clustering(NWBDataInterface):
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
ElectricalSeries.model_rebuild()
|
ElectricalSeries.model_rebuild()
|
||||||
|
ElectricalSeriesData.model_rebuild()
|
||||||
SpikeEventSeries.model_rebuild()
|
SpikeEventSeries.model_rebuild()
|
||||||
|
SpikeEventSeriesData.model_rebuild()
|
||||||
FeatureExtraction.model_rebuild()
|
FeatureExtraction.model_rebuild()
|
||||||
EventDetection.model_rebuild()
|
EventDetection.model_rebuild()
|
||||||
EventWaveform.model_rebuild()
|
EventWaveform.model_rebuild()
|
||||||
|
|
|
@ -247,9 +247,6 @@ class TimeIntervals(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class TimeIntervalsTimeseries(VectorData):
|
class TimeIntervalsTimeseries(VectorData):
|
||||||
|
|
|
@ -211,28 +211,28 @@ class NWBFile(NWBContainer):
|
||||||
...,
|
...,
|
||||||
description="""Date and time corresponding to time zero of all timestamps. The date is stored in UTC with local timezone offset as ISO 8601 extended formatted string: 2018-09-28T14:43:54.123+02:00. Dates stored in UTC end in \"Z\" with no timezone offset. Date accuracy is up to milliseconds. All times stored in the file use this time as reference (i.e., time zero).""",
|
description="""Date and time corresponding to time zero of all timestamps. The date is stored in UTC with local timezone offset as ISO 8601 extended formatted string: 2018-09-28T14:43:54.123+02:00. Dates stored in UTC end in \"Z\" with no timezone offset. Date accuracy is up to milliseconds. All times stored in the file use this time as reference (i.e., time zero).""",
|
||||||
)
|
)
|
||||||
acquisition: Optional[List[Union[DynamicTable, NWBDataInterface]]] = Field(
|
acquisition: Optional[Dict[str, Union[DynamicTable, NWBDataInterface]]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Data streams recorded from the system, including ephys, ophys, tracking, etc. This group should be read-only after the experiment is completed and timestamps are corrected to a common timebase. The data stored here may be links to raw data stored in external NWB files. This will allow keeping bulky raw data out of the file while preserving the option of keeping some/all in the file. Acquired data includes tracking and experimental data streams (i.e., everything measured from the system). If bulky data is stored in the /acquisition group, the data can exist in a separate NWB file that is linked to by the file being used for processing and analysis.""",
|
description="""Data streams recorded from the system, including ephys, ophys, tracking, etc. This group should be read-only after the experiment is completed and timestamps are corrected to a common timebase. The data stored here may be links to raw data stored in external NWB files. This will allow keeping bulky raw data out of the file while preserving the option of keeping some/all in the file. Acquired data includes tracking and experimental data streams (i.e., everything measured from the system). If bulky data is stored in the /acquisition group, the data can exist in a separate NWB file that is linked to by the file being used for processing and analysis.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}, {"range": "DynamicTable"}]}
|
"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}, {"range": "DynamicTable"}]}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
analysis: Optional[List[Union[DynamicTable, NWBContainer]]] = Field(
|
analysis: Optional[Dict[str, Union[DynamicTable, NWBContainer]]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Lab-specific and custom scientific analysis of data. There is no defined format for the content of this group - the format is up to the individual user/lab. To facilitate sharing analysis data between labs, the contents here should be stored in standard types (e.g., neurodata_types) and appropriately documented. The file can store lab-specific and custom data analysis without restriction on its form or schema, reducing data formatting restrictions on end users. Such data should be placed in the analysis group. The analysis data should be documented so that it could be shared with other labs.""",
|
description="""Lab-specific and custom scientific analysis of data. There is no defined format for the content of this group - the format is up to the individual user/lab. To facilitate sharing analysis data between labs, the contents here should be stored in standard types (e.g., neurodata_types) and appropriately documented. The file can store lab-specific and custom data analysis without restriction on its form or schema, reducing data formatting restrictions on end users. Such data should be placed in the analysis group. The analysis data should be documented so that it could be shared with other labs.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"any_of": [{"range": "NWBContainer"}, {"range": "DynamicTable"}]}
|
"linkml_meta": {"any_of": [{"range": "NWBContainer"}, {"range": "DynamicTable"}]}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
scratch: Optional[List[Union[DynamicTable, NWBContainer]]] = Field(
|
scratch: Optional[Dict[str, Union[DynamicTable, NWBContainer]]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""A place to store one-off analysis results. Data placed here is not intended for sharing. By placing data here, users acknowledge that there is no guarantee that their data meets any standard.""",
|
description="""A place to store one-off analysis results. Data placed here is not intended for sharing. By placing data here, users acknowledge that there is no guarantee that their data meets any standard.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"any_of": [{"range": "NWBContainer"}, {"range": "DynamicTable"}]}
|
"linkml_meta": {"any_of": [{"range": "NWBContainer"}, {"range": "DynamicTable"}]}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
processing: Optional[List[ProcessingModule]] = Field(
|
processing: Optional[Dict[str, ProcessingModule]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""The home for ProcessingModules. These modules perform intermediate analysis of data that is necessary to perform before scientific analysis. Examples include spike clustering, extracting position from tracking data, stitching together image slices. ProcessingModules can be large and express many data sets from relatively complex analysis (e.g., spike detection and clustering) or small, representing extraction of position information from tracking video, or even binary lick/no-lick decisions. Common software tools (e.g., klustakwik, MClust) are expected to read/write data here. 'Processing' refers to intermediate analysis of the acquired data to make it more amenable to scientific analysis.""",
|
description="""The home for ProcessingModules. These modules perform intermediate analysis of data that is necessary to perform before scientific analysis. Examples include spike clustering, extracting position from tracking data, stitching together image slices. ProcessingModules can be large and express many data sets from relatively complex analysis (e.g., spike detection and clustering) or small, representing extraction of position information from tracking video, or even binary lick/no-lick decisions. Common software tools (e.g., klustakwik, MClust) are expected to read/write data here. 'Processing' refers to intermediate analysis of the acquired data to make it more amenable to scientific analysis.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ProcessingModule"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ProcessingModule"}]}},
|
||||||
|
@ -250,6 +250,9 @@ class NWBFile(NWBContainer):
|
||||||
description="""Experimental intervals, whether that be logically distinct sub-experiments having a particular scientific goal, trials (see trials subgroup) during an experiment, or epochs (see epochs subgroup) deriving from analysis of data.""",
|
description="""Experimental intervals, whether that be logically distinct sub-experiments having a particular scientific goal, trials (see trials subgroup) during an experiment, or epochs (see epochs subgroup) deriving from analysis of data.""",
|
||||||
)
|
)
|
||||||
units: Optional[Units] = Field(None, description="""Data about sorted spike units.""")
|
units: Optional[Units] = Field(None, description="""Data about sorted spike units.""")
|
||||||
|
specifications: Optional[dict] = Field(
|
||||||
|
None, description="""Nested dictionary of schema specifications"""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class NWBFileStimulus(ConfiguredBaseModel):
|
class NWBFileStimulus(ConfiguredBaseModel):
|
||||||
|
@ -265,12 +268,12 @@ class NWBFileStimulus(ConfiguredBaseModel):
|
||||||
"linkml_meta": {"equals_string": "stimulus", "ifabsent": "string(stimulus)"}
|
"linkml_meta": {"equals_string": "stimulus", "ifabsent": "string(stimulus)"}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
presentation: Optional[List[TimeSeries]] = Field(
|
presentation: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Stimuli presented during the experiment.""",
|
description="""Stimuli presented during the experiment.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}},
|
||||||
)
|
)
|
||||||
templates: Optional[List[TimeSeries]] = Field(
|
templates: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None,
|
None,
|
||||||
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.""",
|
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.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}},
|
||||||
|
@ -348,11 +351,11 @@ class NWBFileGeneral(ConfiguredBaseModel):
|
||||||
None,
|
None,
|
||||||
description="""Information about virus(es) used in experiments, including virus ID, source, date made, injection location, volume, etc.""",
|
description="""Information about virus(es) used in experiments, including virus ID, source, date made, injection location, volume, etc.""",
|
||||||
)
|
)
|
||||||
nwb_container: Optional[List[NWBContainer]] = Field(
|
nwb_container: Optional[Dict[str, NWBContainer]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Place-holder than can be extended so that lab-specific meta-data can be placed in /general.""",
|
description="""Place-holder than can be extended so that lab-specific meta-data can be placed in /general.""",
|
||||||
)
|
)
|
||||||
devices: Optional[List[Device]] = Field(
|
devices: Optional[Dict[str, Device]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Description of hardware devices used during experiment, e.g., monitors, ADC boards, microscopes, etc.""",
|
description="""Description of hardware devices used during experiment, e.g., monitors, ADC boards, microscopes, etc.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "Device"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "Device"}]}},
|
||||||
|
@ -367,12 +370,12 @@ class NWBFileGeneral(ConfiguredBaseModel):
|
||||||
intracellular_ephys: Optional[GeneralIntracellularEphys] = Field(
|
intracellular_ephys: Optional[GeneralIntracellularEphys] = Field(
|
||||||
None, description="""Metadata related to intracellular electrophysiology."""
|
None, description="""Metadata related to intracellular electrophysiology."""
|
||||||
)
|
)
|
||||||
optogenetics: Optional[List[OptogeneticStimulusSite]] = Field(
|
optogenetics: Optional[Dict[str, OptogeneticStimulusSite]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Metadata describing optogenetic stimuluation.""",
|
description="""Metadata describing optogenetic stimuluation.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "OptogeneticStimulusSite"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "OptogeneticStimulusSite"}]}},
|
||||||
)
|
)
|
||||||
optophysiology: Optional[List[ImagingPlane]] = Field(
|
optophysiology: Optional[Dict[str, ImagingPlane]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Metadata related to optophysiology.""",
|
description="""Metadata related to optophysiology.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ImagingPlane"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ImagingPlane"}]}},
|
||||||
|
@ -450,12 +453,12 @@ class GeneralExtracellularEphys(ConfiguredBaseModel):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
electrode_group: Optional[List[ElectrodeGroup]] = Field(
|
|
||||||
None, description="""Physical group of electrodes."""
|
|
||||||
)
|
|
||||||
electrodes: Optional[ExtracellularEphysElectrodes] = Field(
|
electrodes: Optional[ExtracellularEphysElectrodes] = Field(
|
||||||
None, description="""A table of all electrodes (i.e. channels) used for recording."""
|
None, description="""A table of all electrodes (i.e. channels) used for recording."""
|
||||||
)
|
)
|
||||||
|
value: Optional[Dict[str, ElectrodeGroup]] = Field(
|
||||||
|
None, description="""Physical group of electrodes."""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ExtracellularEphysElectrodes(DynamicTable):
|
class ExtracellularEphysElectrodes(DynamicTable):
|
||||||
|
@ -525,8 +528,14 @@ class ExtracellularEphysElectrodes(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
group: List[ElectrodeGroup] = Field(
|
group: VectorData[NDArray[Any, ElectrodeGroup]] = Field(
|
||||||
..., description="""Reference to the ElectrodeGroup this electrode is a part of."""
|
...,
|
||||||
|
description="""Reference to the ElectrodeGroup this electrode is a part of.""",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {
|
||||||
|
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
||||||
|
}
|
||||||
|
},
|
||||||
)
|
)
|
||||||
group_name: VectorData[NDArray[Any, str]] = Field(
|
group_name: VectorData[NDArray[Any, str]] = Field(
|
||||||
...,
|
...,
|
||||||
|
@ -583,9 +592,6 @@ class ExtracellularEphysElectrodes(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class GeneralIntracellularEphys(ConfiguredBaseModel):
|
class GeneralIntracellularEphys(ConfiguredBaseModel):
|
||||||
|
@ -608,12 +614,12 @@ class GeneralIntracellularEphys(ConfiguredBaseModel):
|
||||||
None,
|
None,
|
||||||
description="""Description of filtering used. Includes filtering type and parameters, frequency fall-off, etc. If this changes between TimeSeries, filter description should be stored as a text attribute for each TimeSeries.""",
|
description="""Description of filtering used. Includes filtering type and parameters, frequency fall-off, etc. If this changes between TimeSeries, filter description should be stored as a text attribute for each TimeSeries.""",
|
||||||
)
|
)
|
||||||
intracellular_electrode: Optional[List[IntracellularElectrode]] = Field(
|
|
||||||
None, description="""An intracellular electrode."""
|
|
||||||
)
|
|
||||||
sweep_table: Optional[SweepTable] = Field(
|
sweep_table: Optional[SweepTable] = Field(
|
||||||
None, description="""The table which groups different PatchClampSeries together."""
|
None, description="""The table which groups different PatchClampSeries together."""
|
||||||
)
|
)
|
||||||
|
value: Optional[Dict[str, IntracellularElectrode]] = Field(
|
||||||
|
None, description="""An intracellular electrode."""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class NWBFileIntervals(ConfiguredBaseModel):
|
class NWBFileIntervals(ConfiguredBaseModel):
|
||||||
|
@ -639,7 +645,7 @@ class NWBFileIntervals(ConfiguredBaseModel):
|
||||||
invalid_times: Optional[TimeIntervals] = Field(
|
invalid_times: Optional[TimeIntervals] = Field(
|
||||||
None, description="""Time intervals that should be removed from analysis."""
|
None, description="""Time intervals that should be removed from analysis."""
|
||||||
)
|
)
|
||||||
time_intervals: Optional[List[TimeIntervals]] = Field(
|
value: Optional[Dict[str, TimeIntervals]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Optional additional table(s) for describing other experimental time intervals.""",
|
description="""Optional additional table(s) for describing other experimental time intervals.""",
|
||||||
)
|
)
|
||||||
|
|
|
@ -262,11 +262,21 @@ class PatchClampSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: str = Field(
|
unit: str = Field(
|
||||||
...,
|
...,
|
||||||
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'.""",
|
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'.""",
|
||||||
)
|
)
|
||||||
value: Optional[NDArray[Shape["* num_times"], float]] = Field(
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -281,12 +291,12 @@ class CurrentClampSeries(PatchClampSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: CurrentClampSeriesData = Field(..., description="""Recorded voltage.""")
|
|
||||||
bias_current: Optional[float] = Field(None, description="""Bias current, in amps.""")
|
bias_current: Optional[float] = Field(None, description="""Bias current, in amps.""")
|
||||||
bridge_balance: Optional[float] = Field(None, description="""Bridge balance, in ohms.""")
|
bridge_balance: Optional[float] = Field(None, description="""Bridge balance, in ohms.""")
|
||||||
capacitance_compensation: Optional[float] = Field(
|
capacitance_compensation: Optional[float] = Field(
|
||||||
None, description="""Capacitance compensation, in farads."""
|
None, description="""Capacitance compensation, in farads."""
|
||||||
)
|
)
|
||||||
|
data: CurrentClampSeriesData = Field(..., description="""Recorded voltage.""")
|
||||||
stimulus_description: str = Field(
|
stimulus_description: str = Field(
|
||||||
..., description="""Protocol/stimulus name for this patch-clamp dataset."""
|
..., description="""Protocol/stimulus name for this patch-clamp dataset."""
|
||||||
)
|
)
|
||||||
|
@ -354,12 +364,24 @@ class CurrentClampSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Literal["volts"] = Field(
|
unit: Literal["volts"] = Field(
|
||||||
"volts",
|
"volts",
|
||||||
description="""Base unit of measurement for working with the data. which is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
description="""Base unit of measurement for working with the data. which is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
)
|
)
|
||||||
value: Any = Field(...)
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class IZeroClampSeries(CurrentClampSeries):
|
class IZeroClampSeries(CurrentClampSeries):
|
||||||
|
@ -512,6 +534,16 @@ class CurrentClampStimulusSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Literal["amperes"] = Field(
|
unit: Literal["amperes"] = Field(
|
||||||
"amperes",
|
"amperes",
|
||||||
description="""Base unit of measurement for working with the data. which is fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
description="""Base unit of measurement for working with the data. which is fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
|
@ -519,7 +551,9 @@ class CurrentClampStimulusSeriesData(ConfiguredBaseModel):
|
||||||
"linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"}
|
"linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
value: Any = Field(...)
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class VoltageClampSeries(PatchClampSeries):
|
class VoltageClampSeries(PatchClampSeries):
|
||||||
|
@ -532,13 +566,13 @@ class VoltageClampSeries(PatchClampSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: VoltageClampSeriesData = Field(..., description="""Recorded current.""")
|
|
||||||
capacitance_fast: Optional[VoltageClampSeriesCapacitanceFast] = Field(
|
capacitance_fast: Optional[VoltageClampSeriesCapacitanceFast] = Field(
|
||||||
None, description="""Fast capacitance, in farads."""
|
None, description="""Fast capacitance, in farads."""
|
||||||
)
|
)
|
||||||
capacitance_slow: Optional[VoltageClampSeriesCapacitanceSlow] = Field(
|
capacitance_slow: Optional[VoltageClampSeriesCapacitanceSlow] = Field(
|
||||||
None, description="""Slow capacitance, in farads."""
|
None, description="""Slow capacitance, in farads."""
|
||||||
)
|
)
|
||||||
|
data: VoltageClampSeriesData = Field(..., description="""Recorded current.""")
|
||||||
resistance_comp_bandwidth: Optional[VoltageClampSeriesResistanceCompBandwidth] = Field(
|
resistance_comp_bandwidth: Optional[VoltageClampSeriesResistanceCompBandwidth] = Field(
|
||||||
None, description="""Resistance compensation bandwidth, in hertz."""
|
None, description="""Resistance compensation bandwidth, in hertz."""
|
||||||
)
|
)
|
||||||
|
@ -610,27 +644,6 @@ class VoltageClampSeries(PatchClampSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class VoltageClampSeriesData(ConfiguredBaseModel):
|
|
||||||
"""
|
|
||||||
Recorded current.
|
|
||||||
"""
|
|
||||||
|
|
||||||
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.icephys"})
|
|
||||||
|
|
||||||
name: Literal["data"] = Field(
|
|
||||||
"data",
|
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
|
||||||
)
|
|
||||||
unit: Literal["amperes"] = Field(
|
|
||||||
"amperes",
|
|
||||||
description="""Base unit of measurement for working with the data. which is fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
|
||||||
json_schema_extra={
|
|
||||||
"linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"}
|
|
||||||
},
|
|
||||||
)
|
|
||||||
value: Any = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class VoltageClampSeriesCapacitanceFast(ConfiguredBaseModel):
|
class VoltageClampSeriesCapacitanceFast(ConfiguredBaseModel):
|
||||||
"""
|
"""
|
||||||
Fast capacitance, in farads.
|
Fast capacitance, in farads.
|
||||||
|
@ -683,6 +696,39 @@ class VoltageClampSeriesCapacitanceSlow(ConfiguredBaseModel):
|
||||||
value: float = Field(...)
|
value: float = Field(...)
|
||||||
|
|
||||||
|
|
||||||
|
class VoltageClampSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Recorded current.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.icephys"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["amperes"] = Field(
|
||||||
|
"amperes",
|
||||||
|
description="""Base unit of measurement for working with the data. which is fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class VoltageClampSeriesResistanceCompBandwidth(ConfiguredBaseModel):
|
class VoltageClampSeriesResistanceCompBandwidth(ConfiguredBaseModel):
|
||||||
"""
|
"""
|
||||||
Resistance compensation bandwidth, in hertz.
|
Resistance compensation bandwidth, in hertz.
|
||||||
|
@ -887,12 +933,24 @@ class VoltageClampStimulusSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Literal["volts"] = Field(
|
unit: Literal["volts"] = Field(
|
||||||
"volts",
|
"volts",
|
||||||
description="""Base unit of measurement for working with the data. which is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
description="""Base unit of measurement for working with the data. which is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
)
|
)
|
||||||
value: Any = Field(...)
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class IntracellularElectrode(NWBContainer):
|
class IntracellularElectrode(NWBContainer):
|
||||||
|
@ -942,18 +1000,15 @@ class SweepTable(DynamicTable):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
sweep_number: VectorData[NDArray[Any, int]] = Field(
|
series: VectorData[NDArray[Any, PatchClampSeries]] = Field(
|
||||||
...,
|
...,
|
||||||
description="""Sweep number of the PatchClampSeries in that row.""",
|
description="""The PatchClampSeries with the sweep number in that row.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
series: List[PatchClampSeries] = Field(
|
|
||||||
..., description="""The PatchClampSeries with the sweep number in that row."""
|
|
||||||
)
|
|
||||||
series_index: Named[VectorIndex] = Field(
|
series_index: Named[VectorIndex] = Field(
|
||||||
...,
|
...,
|
||||||
description="""Index for series.""",
|
description="""Index for series.""",
|
||||||
|
@ -966,6 +1021,15 @@ class SweepTable(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
sweep_number: VectorData[NDArray[Any, int]] = Field(
|
||||||
|
...,
|
||||||
|
description="""Sweep number of the PatchClampSeries in that row.""",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {
|
||||||
|
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
)
|
||||||
colnames: List[str] = Field(
|
colnames: List[str] = Field(
|
||||||
...,
|
...,
|
||||||
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
|
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
|
||||||
|
@ -976,9 +1040,6 @@ class SweepTable(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
|
@ -991,9 +1052,9 @@ IZeroClampSeries.model_rebuild()
|
||||||
CurrentClampStimulusSeries.model_rebuild()
|
CurrentClampStimulusSeries.model_rebuild()
|
||||||
CurrentClampStimulusSeriesData.model_rebuild()
|
CurrentClampStimulusSeriesData.model_rebuild()
|
||||||
VoltageClampSeries.model_rebuild()
|
VoltageClampSeries.model_rebuild()
|
||||||
VoltageClampSeriesData.model_rebuild()
|
|
||||||
VoltageClampSeriesCapacitanceFast.model_rebuild()
|
VoltageClampSeriesCapacitanceFast.model_rebuild()
|
||||||
VoltageClampSeriesCapacitanceSlow.model_rebuild()
|
VoltageClampSeriesCapacitanceSlow.model_rebuild()
|
||||||
|
VoltageClampSeriesData.model_rebuild()
|
||||||
VoltageClampSeriesResistanceCompBandwidth.model_rebuild()
|
VoltageClampSeriesResistanceCompBandwidth.model_rebuild()
|
||||||
VoltageClampSeriesResistanceCompCorrection.model_rebuild()
|
VoltageClampSeriesResistanceCompCorrection.model_rebuild()
|
||||||
VoltageClampSeriesResistanceCompPrediction.model_rebuild()
|
VoltageClampSeriesResistanceCompPrediction.model_rebuild()
|
||||||
|
|
|
@ -152,7 +152,7 @@ class GrayscaleImage(Image):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
value: Optional[NDArray[Shape["* x, * y"], float]] = Field(
|
value: Optional[NDArray[Shape["* x, * y"], float | int]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"array": {"dimensions": [{"alias": "x"}, {"alias": "y"}]}}
|
"linkml_meta": {"array": {"dimensions": [{"alias": "x"}, {"alias": "y"}]}}
|
||||||
|
@ -174,7 +174,7 @@ class RGBImage(Image):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
value: Optional[NDArray[Shape["* x, * y, 3 r_g_b"], float]] = Field(
|
value: Optional[NDArray[Shape["* x, * y, 3 r_g_b"], float | int]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
|
@ -204,7 +204,7 @@ class RGBAImage(Image):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
value: Optional[NDArray[Shape["* x, * y, 4 r_g_b_a"], float]] = Field(
|
value: Optional[NDArray[Shape["* x, * y, 4 r_g_b_a"], float | int]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
|
@ -234,12 +234,9 @@ class ImageSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: Optional[
|
data: Optional[ImageSeriesData] = Field(
|
||||||
Union[
|
None, description="""Binary data representing images across frames."""
|
||||||
NDArray[Shape["* frame, * x, * y"], float],
|
)
|
||||||
NDArray[Shape["* frame, * x, * y, * z"], float],
|
|
||||||
]
|
|
||||||
] = Field(None, description="""Binary data representing images across frames.""")
|
|
||||||
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Number of pixels on x, y, (and z) axes.""",
|
description="""Number of pixels on x, y, (and z) axes.""",
|
||||||
|
@ -250,8 +247,9 @@ class ImageSeries(TimeSeries):
|
||||||
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
||||||
)
|
)
|
||||||
format: Optional[str] = Field(
|
format: Optional[str] = Field(
|
||||||
None,
|
"raw",
|
||||||
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="""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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(raw)"}},
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -290,6 +288,39 @@ class ImageSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ImageSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Binary data representing images across frames.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.image"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: str = Field(
|
||||||
|
...,
|
||||||
|
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'.""",
|
||||||
|
)
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* frame, * x, * y"], float | int],
|
||||||
|
NDArray[Shape["* frame, * x, * y, * z"], float | int],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class ImageSeriesExternalFile(ConfiguredBaseModel):
|
class ImageSeriesExternalFile(ConfiguredBaseModel):
|
||||||
"""
|
"""
|
||||||
Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.
|
Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.
|
||||||
|
@ -331,12 +362,9 @@ class ImageMaskSeries(ImageSeries):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
data: Optional[
|
data: Optional[ImageSeriesData] = Field(
|
||||||
Union[
|
None, description="""Binary data representing images across frames."""
|
||||||
NDArray[Shape["* frame, * x, * y"], float],
|
)
|
||||||
NDArray[Shape["* frame, * x, * y, * z"], float],
|
|
||||||
]
|
|
||||||
] = Field(None, description="""Binary data representing images across frames.""")
|
|
||||||
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Number of pixels on x, y, (and z) axes.""",
|
description="""Number of pixels on x, y, (and z) axes.""",
|
||||||
|
@ -347,8 +375,9 @@ class ImageMaskSeries(ImageSeries):
|
||||||
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
||||||
)
|
)
|
||||||
format: Optional[str] = Field(
|
format: Optional[str] = Field(
|
||||||
None,
|
"raw",
|
||||||
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="""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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(raw)"}},
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -409,12 +438,9 @@ class OpticalSeries(ImageSeries):
|
||||||
None,
|
None,
|
||||||
description="""Description of image relative to some reference frame (e.g., which way is up). Must also specify frame of reference.""",
|
description="""Description of image relative to some reference frame (e.g., which way is up). Must also specify frame of reference.""",
|
||||||
)
|
)
|
||||||
data: Optional[
|
data: Optional[ImageSeriesData] = Field(
|
||||||
Union[
|
None, description="""Binary data representing images across frames."""
|
||||||
NDArray[Shape["* frame, * x, * y"], float],
|
)
|
||||||
NDArray[Shape["* frame, * x, * y, * z"], float],
|
|
||||||
]
|
|
||||||
] = Field(None, description="""Binary data representing images across frames.""")
|
|
||||||
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Number of pixels on x, y, (and z) axes.""",
|
description="""Number of pixels on x, y, (and z) axes.""",
|
||||||
|
@ -425,8 +451,9 @@ class OpticalSeries(ImageSeries):
|
||||||
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
||||||
)
|
)
|
||||||
format: Optional[str] = Field(
|
format: Optional[str] = Field(
|
||||||
None,
|
"raw",
|
||||||
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="""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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(raw)"}},
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -475,10 +502,8 @@ class IndexSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: NDArray[Shape["* num_times"], int] = Field(
|
data: IndexSeriesData = Field(
|
||||||
...,
|
..., description="""Index of the frame in the referenced ImageSeries."""
|
||||||
description="""Index of the frame in the referenced ImageSeries.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
|
||||||
)
|
)
|
||||||
indexed_timeseries: Union[ImageSeries, str] = Field(
|
indexed_timeseries: Union[ImageSeries, str] = Field(
|
||||||
...,
|
...,
|
||||||
|
@ -526,13 +551,45 @@ class IndexSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class IndexSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Index of the frame in the referenced ImageSeries.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.image"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: str = Field(
|
||||||
|
...,
|
||||||
|
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'.""",
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
GrayscaleImage.model_rebuild()
|
GrayscaleImage.model_rebuild()
|
||||||
RGBImage.model_rebuild()
|
RGBImage.model_rebuild()
|
||||||
RGBAImage.model_rebuild()
|
RGBAImage.model_rebuild()
|
||||||
ImageSeries.model_rebuild()
|
ImageSeries.model_rebuild()
|
||||||
|
ImageSeriesData.model_rebuild()
|
||||||
ImageSeriesExternalFile.model_rebuild()
|
ImageSeriesExternalFile.model_rebuild()
|
||||||
ImageMaskSeries.model_rebuild()
|
ImageMaskSeries.model_rebuild()
|
||||||
OpticalSeries.model_rebuild()
|
OpticalSeries.model_rebuild()
|
||||||
IndexSeries.model_rebuild()
|
IndexSeries.model_rebuild()
|
||||||
|
IndexSeriesData.model_rebuild()
|
||||||
|
|
|
@ -251,6 +251,16 @@ class AbstractFeatureSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Optional[str] = Field(
|
unit: Optional[str] = Field(
|
||||||
"see ",
|
"see ",
|
||||||
description="""Since there can be different units for different features, store the units in 'feature_units'. The default value for this attribute is \"see 'feature_units'\".""",
|
description="""Since there can be different units for different features, store the units in 'feature_units'. The default value for this attribute is \"see 'feature_units'\".""",
|
||||||
|
@ -258,8 +268,8 @@ class AbstractFeatureSeriesData(ConfiguredBaseModel):
|
||||||
)
|
)
|
||||||
value: Optional[
|
value: Optional[
|
||||||
Union[
|
Union[
|
||||||
NDArray[Shape["* num_times"], float],
|
NDArray[Shape["* num_times"], float | int],
|
||||||
NDArray[Shape["* num_times, * num_features"], float],
|
NDArray[Shape["* num_times, * num_features"], float | int],
|
||||||
]
|
]
|
||||||
] = Field(None)
|
] = Field(None)
|
||||||
|
|
||||||
|
@ -274,10 +284,8 @@ class AnnotationSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: NDArray[Shape["* num_times"], str] = Field(
|
data: AnnotationSeriesData = Field(
|
||||||
...,
|
..., description="""Annotations made during an experiment."""
|
||||||
description="""Annotations made during an experiment.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -316,6 +324,39 @@ class AnnotationSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class AnnotationSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Annotations made during an experiment.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.misc"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: float = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data. Annotations have no units, so the value is fixed to -1.0.""",
|
||||||
|
le=-1,
|
||||||
|
ge=-1,
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["n/a"] = Field(
|
||||||
|
"n/a",
|
||||||
|
description="""Base unit of measurement for working with the data. Annotations have no units, so the value is fixed to 'n/a'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "n/a", "ifabsent": "string(n/a)"}},
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], str]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class IntervalSeries(TimeSeries):
|
class IntervalSeries(TimeSeries):
|
||||||
"""
|
"""
|
||||||
Stores intervals of data. The timestamps field stores the beginning and end of intervals. The data field stores whether the interval just started (>0 value) or ended (<0 value). Different interval types can be represented in the same series by using multiple key values (eg, 1 for feature A, 2 for feature B, 3 for feature C, etc). The field data stores an 8-bit integer. This is largely an alias of a standard TimeSeries but that is identifiable as representing time intervals in a machine-readable way.
|
Stores intervals of data. The timestamps field stores the beginning and end of intervals. The data field stores whether the interval just started (>0 value) or ended (<0 value). Different interval types can be represented in the same series by using multiple key values (eg, 1 for feature A, 2 for feature B, 3 for feature C, etc). The field data stores an 8-bit integer. This is largely an alias of a standard TimeSeries but that is identifiable as representing time intervals in a machine-readable way.
|
||||||
|
@ -326,10 +367,8 @@ class IntervalSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: NDArray[Shape["* num_times"], int] = Field(
|
data: IntervalSeriesData = Field(
|
||||||
...,
|
..., description="""Use values >0 if interval started, <0 if interval ended."""
|
||||||
description="""Use values >0 if interval started, <0 if interval ended.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -368,6 +407,39 @@ class IntervalSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class IntervalSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Use values >0 if interval started, <0 if interval ended.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.misc"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: float = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data. Annotations have no units, so the value is fixed to -1.0.""",
|
||||||
|
le=-1,
|
||||||
|
ge=-1,
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["n/a"] = Field(
|
||||||
|
"n/a",
|
||||||
|
description="""Base unit of measurement for working with the data. Annotations have no units, so the value is fixed to 'n/a'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "n/a", "ifabsent": "string(n/a)"}},
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class DecompositionSeries(TimeSeries):
|
class DecompositionSeries(TimeSeries):
|
||||||
"""
|
"""
|
||||||
Spectral analysis of a time series, e.g. of an LFP or a speech signal.
|
Spectral analysis of a time series, e.g. of an LFP or a speech signal.
|
||||||
|
@ -443,24 +515,36 @@ class DecompositionSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: str = Field(
|
unit: str = Field(
|
||||||
"no unit",
|
"no unit",
|
||||||
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'.""",
|
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'.""",
|
||||||
json_schema_extra={"linkml_meta": {"ifabsent": "string(no unit)"}},
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(no unit)"}},
|
||||||
)
|
)
|
||||||
value: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float]] = Field(
|
value: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float | int]] = (
|
||||||
None,
|
Field(
|
||||||
json_schema_extra={
|
None,
|
||||||
"linkml_meta": {
|
json_schema_extra={
|
||||||
"array": {
|
"linkml_meta": {
|
||||||
"dimensions": [
|
"array": {
|
||||||
{"alias": "num_times"},
|
"dimensions": [
|
||||||
{"alias": "num_channels"},
|
{"alias": "num_times"},
|
||||||
{"alias": "num_bands"},
|
{"alias": "num_channels"},
|
||||||
]
|
{"alias": "num_bands"},
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
},
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -518,9 +602,6 @@ class DecompositionSeriesBands(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class Units(DynamicTable):
|
class Units(DynamicTable):
|
||||||
|
@ -533,9 +614,18 @@ class Units(DynamicTable):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field("Units", json_schema_extra={"linkml_meta": {"ifabsent": "string(Units)"}})
|
name: str = Field("Units", json_schema_extra={"linkml_meta": {"ifabsent": "string(Units)"}})
|
||||||
spike_times_index: Optional[Named[VectorIndex]] = Field(
|
electrode_group: Optional[VectorData[NDArray[Any, ElectrodeGroup]]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Index into the spike_times dataset.""",
|
description="""Electrode group that each spike unit came from.""",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {
|
||||||
|
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
electrodes: Optional[Named[DynamicTableRegion]] = Field(
|
||||||
|
None,
|
||||||
|
description="""Electrode that each spike unit came from, specified using a DynamicTableRegion.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"annotations": {
|
"annotations": {
|
||||||
|
@ -545,12 +635,9 @@ class Units(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
spike_times: Optional[UnitsSpikeTimes] = Field(
|
electrodes_index: Optional[Named[VectorIndex]] = Field(
|
||||||
None, description="""Spike times for each unit."""
|
|
||||||
)
|
|
||||||
obs_intervals_index: Optional[Named[VectorIndex]] = Field(
|
|
||||||
None,
|
None,
|
||||||
description="""Index into the obs_intervals dataset.""",
|
description="""Index into electrodes.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"annotations": {
|
"annotations": {
|
||||||
|
@ -576,9 +663,9 @@ class Units(DynamicTable):
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
electrodes_index: Optional[Named[VectorIndex]] = Field(
|
obs_intervals_index: Optional[Named[VectorIndex]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Index into electrodes.""",
|
description="""Index into the obs_intervals dataset.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"annotations": {
|
"annotations": {
|
||||||
|
@ -588,9 +675,12 @@ class Units(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
electrodes: Optional[Named[DynamicTableRegion]] = Field(
|
spike_times: Optional[UnitsSpikeTimes] = Field(
|
||||||
|
None, description="""Spike times for each unit."""
|
||||||
|
)
|
||||||
|
spike_times_index: Optional[Named[VectorIndex]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Electrode that each spike unit came from, specified using a DynamicTableRegion.""",
|
description="""Index into the spike_times dataset.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"annotations": {
|
"annotations": {
|
||||||
|
@ -600,25 +690,12 @@ class Units(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
electrode_group: Optional[List[ElectrodeGroup]] = Field(
|
waveform_mean: Optional[UnitsWaveformMean] = Field(
|
||||||
None, description="""Electrode group that each spike unit came from."""
|
None, description="""Spike waveform mean for each spike unit."""
|
||||||
|
)
|
||||||
|
waveform_sd: Optional[UnitsWaveformSd] = Field(
|
||||||
|
None, description="""Spike waveform standard deviation for each spike unit."""
|
||||||
)
|
)
|
||||||
waveform_mean: Optional[
|
|
||||||
VectorData[
|
|
||||||
Union[
|
|
||||||
NDArray[Shape["* num_units, * num_samples"], float],
|
|
||||||
NDArray[Shape["* num_units, * num_samples, * num_electrodes"], float],
|
|
||||||
]
|
|
||||||
]
|
|
||||||
] = Field(None, description="""Spike waveform mean for each spike unit.""")
|
|
||||||
waveform_sd: Optional[
|
|
||||||
VectorData[
|
|
||||||
Union[
|
|
||||||
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.""")
|
|
||||||
colnames: List[str] = Field(
|
colnames: List[str] = Field(
|
||||||
...,
|
...,
|
||||||
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
|
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
|
||||||
|
@ -629,9 +706,6 @@ class Units(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class UnitsSpikeTimes(VectorData):
|
class UnitsSpikeTimes(VectorData):
|
||||||
|
@ -654,14 +728,62 @@ class UnitsSpikeTimes(VectorData):
|
||||||
description: str = Field(..., description="""Description of what these vectors represent.""")
|
description: str = Field(..., description="""Description of what these vectors represent.""")
|
||||||
|
|
||||||
|
|
||||||
|
class UnitsWaveformMean(VectorData):
|
||||||
|
"""
|
||||||
|
Spike waveform mean for each spike unit.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.misc"})
|
||||||
|
|
||||||
|
name: Literal["waveform_mean"] = Field(
|
||||||
|
"waveform_mean",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {"equals_string": "waveform_mean", "ifabsent": "string(waveform_mean)"}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
sampling_rate: Optional[float] = Field(None, description="""Sampling rate, in hertz.""")
|
||||||
|
unit: Optional[Literal["volts"]] = Field(
|
||||||
|
"volts",
|
||||||
|
description="""Unit of measurement. This value is fixed to 'volts'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
|
)
|
||||||
|
description: str = Field(..., description="""Description of what these vectors represent.""")
|
||||||
|
|
||||||
|
|
||||||
|
class UnitsWaveformSd(VectorData):
|
||||||
|
"""
|
||||||
|
Spike waveform standard deviation for each spike unit.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.misc"})
|
||||||
|
|
||||||
|
name: Literal["waveform_sd"] = Field(
|
||||||
|
"waveform_sd",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {"equals_string": "waveform_sd", "ifabsent": "string(waveform_sd)"}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
sampling_rate: Optional[float] = Field(None, description="""Sampling rate, in hertz.""")
|
||||||
|
unit: Optional[Literal["volts"]] = Field(
|
||||||
|
"volts",
|
||||||
|
description="""Unit of measurement. This value is fixed to 'volts'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
|
)
|
||||||
|
description: str = Field(..., description="""Description of what these vectors represent.""")
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
AbstractFeatureSeries.model_rebuild()
|
AbstractFeatureSeries.model_rebuild()
|
||||||
AbstractFeatureSeriesData.model_rebuild()
|
AbstractFeatureSeriesData.model_rebuild()
|
||||||
AnnotationSeries.model_rebuild()
|
AnnotationSeries.model_rebuild()
|
||||||
|
AnnotationSeriesData.model_rebuild()
|
||||||
IntervalSeries.model_rebuild()
|
IntervalSeries.model_rebuild()
|
||||||
|
IntervalSeriesData.model_rebuild()
|
||||||
DecompositionSeries.model_rebuild()
|
DecompositionSeries.model_rebuild()
|
||||||
DecompositionSeriesData.model_rebuild()
|
DecompositionSeriesData.model_rebuild()
|
||||||
DecompositionSeriesBands.model_rebuild()
|
DecompositionSeriesBands.model_rebuild()
|
||||||
Units.model_rebuild()
|
Units.model_rebuild()
|
||||||
UnitsSpikeTimes.model_rebuild()
|
UnitsSpikeTimes.model_rebuild()
|
||||||
|
UnitsWaveformMean.model_rebuild()
|
||||||
|
UnitsWaveformSd.model_rebuild()
|
||||||
|
|
|
@ -158,10 +158,8 @@ class OptogeneticSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: NDArray[Shape["* num_times"], float] = Field(
|
data: OptogeneticSeriesData = Field(
|
||||||
...,
|
..., description="""Applied power for optogenetic stimulus, in watts."""
|
||||||
description="""Applied power for optogenetic stimulus, in watts.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
|
||||||
)
|
)
|
||||||
site: Union[OptogeneticStimulusSite, str] = Field(
|
site: Union[OptogeneticStimulusSite, str] = Field(
|
||||||
...,
|
...,
|
||||||
|
@ -209,6 +207,37 @@ class OptogeneticSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class OptogeneticSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Applied power for optogenetic stimulus, in watts.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.ogen"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["watts"] = Field(
|
||||||
|
"watts",
|
||||||
|
description="""Unit of measurement for data, which is fixed to 'watts'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "watts", "ifabsent": "string(watts)"}},
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class OptogeneticStimulusSite(NWBContainer):
|
class OptogeneticStimulusSite(NWBContainer):
|
||||||
"""
|
"""
|
||||||
A site of optogenetic stimulation.
|
A site of optogenetic stimulation.
|
||||||
|
@ -239,4 +268,5 @@ class OptogeneticStimulusSite(NWBContainer):
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
OptogeneticSeries.model_rebuild()
|
OptogeneticSeries.model_rebuild()
|
||||||
|
OptogeneticSeriesData.model_rebuild()
|
||||||
OptogeneticStimulusSite.model_rebuild()
|
OptogeneticStimulusSite.model_rebuild()
|
||||||
|
|
|
@ -28,7 +28,7 @@ from ...core.v2_2_1.core_nwb_base import (
|
||||||
TimeSeriesSync,
|
TimeSeriesSync,
|
||||||
)
|
)
|
||||||
from ...core.v2_2_1.core_nwb_device import Device
|
from ...core.v2_2_1.core_nwb_device import Device
|
||||||
from ...core.v2_2_1.core_nwb_image import ImageSeries, ImageSeriesExternalFile
|
from ...core.v2_2_1.core_nwb_image import ImageSeries, ImageSeriesData, ImageSeriesExternalFile
|
||||||
from ...hdmf_common.v1_1_2.hdmf_common_table import DynamicTable, DynamicTableRegion
|
from ...hdmf_common.v1_1_2.hdmf_common_table import DynamicTable, DynamicTableRegion
|
||||||
|
|
||||||
|
|
||||||
|
@ -209,12 +209,9 @@ class TwoPhotonSeries(ImageSeries):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
data: Optional[
|
data: Optional[ImageSeriesData] = Field(
|
||||||
Union[
|
None, description="""Binary data representing images across frames."""
|
||||||
NDArray[Shape["* frame, * x, * y"], float],
|
)
|
||||||
NDArray[Shape["* frame, * x, * y, * z"], float],
|
|
||||||
]
|
|
||||||
] = Field(None, description="""Binary data representing images across frames.""")
|
|
||||||
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Number of pixels on x, y, (and z) axes.""",
|
description="""Number of pixels on x, y, (and z) axes.""",
|
||||||
|
@ -225,8 +222,9 @@ class TwoPhotonSeries(ImageSeries):
|
||||||
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
||||||
)
|
)
|
||||||
format: Optional[str] = Field(
|
format: Optional[str] = Field(
|
||||||
None,
|
"raw",
|
||||||
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="""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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(raw)"}},
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -275,9 +273,7 @@ class RoiResponseSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: Union[
|
data: RoiResponseSeriesData = Field(..., description="""Signals from ROIs.""")
|
||||||
NDArray[Shape["* num_times"], float], NDArray[Shape["* num_times, * num_rois"], float]
|
|
||||||
] = Field(..., description="""Signals from ROIs.""")
|
|
||||||
rois: Named[DynamicTableRegion] = Field(
|
rois: Named[DynamicTableRegion] = Field(
|
||||||
...,
|
...,
|
||||||
description="""DynamicTableRegion referencing into an ROITable containing information on the ROIs stored in this timeseries.""",
|
description="""DynamicTableRegion referencing into an ROITable containing information on the ROIs stored in this timeseries.""",
|
||||||
|
@ -327,6 +323,39 @@ class RoiResponseSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class RoiResponseSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Signals from ROIs.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.ophys"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: str = Field(
|
||||||
|
...,
|
||||||
|
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'.""",
|
||||||
|
)
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* num_times"], float | int],
|
||||||
|
NDArray[Shape["* num_times, * num_rois"], float | int],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class DfOverF(NWBDataInterface):
|
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).
|
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).
|
||||||
|
@ -336,10 +365,10 @@ class DfOverF(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[RoiResponseSeries]] = Field(
|
name: str = Field("DfOverF", json_schema_extra={"linkml_meta": {"ifabsent": "string(DfOverF)"}})
|
||||||
|
value: Optional[Dict[str, RoiResponseSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "RoiResponseSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "RoiResponseSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class Fluorescence(NWBDataInterface):
|
class Fluorescence(NWBDataInterface):
|
||||||
|
@ -351,10 +380,12 @@ class Fluorescence(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[RoiResponseSeries]] = Field(
|
name: str = Field(
|
||||||
|
"Fluorescence", json_schema_extra={"linkml_meta": {"ifabsent": "string(Fluorescence)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, RoiResponseSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "RoiResponseSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "RoiResponseSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class ImageSegmentation(NWBDataInterface):
|
class ImageSegmentation(NWBDataInterface):
|
||||||
|
@ -366,10 +397,13 @@ class ImageSegmentation(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[DynamicTable]] = Field(
|
name: str = Field(
|
||||||
|
"ImageSegmentation",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(ImageSegmentation)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, DynamicTable]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "DynamicTable"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "DynamicTable"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class ImagingPlane(NWBContainer):
|
class ImagingPlane(NWBContainer):
|
||||||
|
@ -538,16 +572,20 @@ class MotionCorrection(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[NWBDataInterface]] = Field(
|
name: str = Field(
|
||||||
|
"MotionCorrection",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(MotionCorrection)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, NWBDataInterface]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
TwoPhotonSeries.model_rebuild()
|
TwoPhotonSeries.model_rebuild()
|
||||||
RoiResponseSeries.model_rebuild()
|
RoiResponseSeries.model_rebuild()
|
||||||
|
RoiResponseSeriesData.model_rebuild()
|
||||||
DfOverF.model_rebuild()
|
DfOverF.model_rebuild()
|
||||||
Fluorescence.model_rebuild()
|
Fluorescence.model_rebuild()
|
||||||
ImageSegmentation.model_rebuild()
|
ImageSegmentation.model_rebuild()
|
||||||
|
|
|
@ -235,7 +235,7 @@ class RetinotopyImage(GrayscaleImage):
|
||||||
)
|
)
|
||||||
field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""")
|
field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""")
|
||||||
format: str = Field(..., description="""Format of image. Right now only 'raw' is supported.""")
|
format: str = Field(..., description="""Format of image. Right now only 'raw' is supported.""")
|
||||||
value: Optional[NDArray[Shape["* x, * y"], float]] = Field(
|
value: Optional[NDArray[Shape["* x, * y"], float | int]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"array": {"dimensions": [{"alias": "x"}, {"alias": "y"}]}}
|
"linkml_meta": {"array": {"dimensions": [{"alias": "x"}, {"alias": "y"}]}}
|
||||||
|
@ -374,7 +374,7 @@ class ImagingRetinotopyFocalDepthImage(RetinotopyImage):
|
||||||
)
|
)
|
||||||
field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""")
|
field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""")
|
||||||
format: str = Field(..., description="""Format of image. Right now only 'raw' is supported.""")
|
format: str = Field(..., description="""Format of image. Right now only 'raw' is supported.""")
|
||||||
value: Optional[NDArray[Shape["* x, * y"], float]] = Field(
|
value: Optional[NDArray[Shape["* x, * y"], float | int]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"array": {"dimensions": [{"alias": "x"}, {"alias": "y"}]}}
|
"linkml_meta": {"array": {"dimensions": [{"alias": "x"}, {"alias": "y"}]}}
|
||||||
|
|
|
@ -38,6 +38,7 @@ from ...core.v2_2_1.core_nwb_ecephys import (
|
||||||
ClusterWaveforms,
|
ClusterWaveforms,
|
||||||
Clustering,
|
Clustering,
|
||||||
ElectricalSeries,
|
ElectricalSeries,
|
||||||
|
ElectricalSeriesData,
|
||||||
ElectrodeGroup,
|
ElectrodeGroup,
|
||||||
ElectrodeGroupPosition,
|
ElectrodeGroupPosition,
|
||||||
EventDetection,
|
EventDetection,
|
||||||
|
@ -46,6 +47,7 @@ from ...core.v2_2_1.core_nwb_ecephys import (
|
||||||
FilteredEphys,
|
FilteredEphys,
|
||||||
LFP,
|
LFP,
|
||||||
SpikeEventSeries,
|
SpikeEventSeries,
|
||||||
|
SpikeEventSeriesData,
|
||||||
)
|
)
|
||||||
from ...core.v2_2_1.core_nwb_epoch import TimeIntervals, TimeIntervalsTimeseries
|
from ...core.v2_2_1.core_nwb_epoch import TimeIntervals, TimeIntervalsTimeseries
|
||||||
from ...core.v2_2_1.core_nwb_file import (
|
from ...core.v2_2_1.core_nwb_file import (
|
||||||
|
@ -85,8 +87,10 @@ from ...core.v2_2_1.core_nwb_image import (
|
||||||
GrayscaleImage,
|
GrayscaleImage,
|
||||||
ImageMaskSeries,
|
ImageMaskSeries,
|
||||||
ImageSeries,
|
ImageSeries,
|
||||||
|
ImageSeriesData,
|
||||||
ImageSeriesExternalFile,
|
ImageSeriesExternalFile,
|
||||||
IndexSeries,
|
IndexSeries,
|
||||||
|
IndexSeriesData,
|
||||||
OpticalSeries,
|
OpticalSeries,
|
||||||
RGBAImage,
|
RGBAImage,
|
||||||
RGBImage,
|
RGBImage,
|
||||||
|
@ -95,14 +99,22 @@ from ...core.v2_2_1.core_nwb_misc import (
|
||||||
AbstractFeatureSeries,
|
AbstractFeatureSeries,
|
||||||
AbstractFeatureSeriesData,
|
AbstractFeatureSeriesData,
|
||||||
AnnotationSeries,
|
AnnotationSeries,
|
||||||
|
AnnotationSeriesData,
|
||||||
DecompositionSeries,
|
DecompositionSeries,
|
||||||
DecompositionSeriesBands,
|
DecompositionSeriesBands,
|
||||||
DecompositionSeriesData,
|
DecompositionSeriesData,
|
||||||
IntervalSeries,
|
IntervalSeries,
|
||||||
|
IntervalSeriesData,
|
||||||
Units,
|
Units,
|
||||||
UnitsSpikeTimes,
|
UnitsSpikeTimes,
|
||||||
|
UnitsWaveformMean,
|
||||||
|
UnitsWaveformSd,
|
||||||
|
)
|
||||||
|
from ...core.v2_2_1.core_nwb_ogen import (
|
||||||
|
OptogeneticSeries,
|
||||||
|
OptogeneticSeriesData,
|
||||||
|
OptogeneticStimulusSite,
|
||||||
)
|
)
|
||||||
from ...core.v2_2_1.core_nwb_ogen import OptogeneticSeries, OptogeneticStimulusSite
|
|
||||||
from ...core.v2_2_1.core_nwb_ophys import (
|
from ...core.v2_2_1.core_nwb_ophys import (
|
||||||
DfOverF,
|
DfOverF,
|
||||||
Fluorescence,
|
Fluorescence,
|
||||||
|
@ -114,6 +126,7 @@ from ...core.v2_2_1.core_nwb_ophys import (
|
||||||
MotionCorrection,
|
MotionCorrection,
|
||||||
OpticalChannel,
|
OpticalChannel,
|
||||||
RoiResponseSeries,
|
RoiResponseSeries,
|
||||||
|
RoiResponseSeriesData,
|
||||||
TwoPhotonSeries,
|
TwoPhotonSeries,
|
||||||
)
|
)
|
||||||
from ...core.v2_2_1.core_nwb_retinotopy import (
|
from ...core.v2_2_1.core_nwb_retinotopy import (
|
||||||
|
|
|
@ -170,9 +170,9 @@ class Image(NWBData):
|
||||||
description: Optional[str] = Field(None, description="""Description of the image.""")
|
description: Optional[str] = Field(None, description="""Description of the image.""")
|
||||||
value: Optional[
|
value: Optional[
|
||||||
Union[
|
Union[
|
||||||
NDArray[Shape["* x, * y"], float],
|
NDArray[Shape["* x, * y"], float | int],
|
||||||
NDArray[Shape["* x, * y, 3 r_g_b"], float],
|
NDArray[Shape["* x, * y, 3 r_g_b"], float | int],
|
||||||
NDArray[Shape["* x, * y, 4 r_g_b_a"], float],
|
NDArray[Shape["* x, * y, 4 r_g_b_a"], float | int],
|
||||||
]
|
]
|
||||||
] = Field(None)
|
] = Field(None)
|
||||||
|
|
||||||
|
@ -333,13 +333,16 @@ class ProcessingModule(NWBContainer):
|
||||||
{"from_schema": "core.nwb.base", "tree_root": True}
|
{"from_schema": "core.nwb.base", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[Union[DynamicTable, NWBDataInterface]]] = Field(
|
name: str = Field(...)
|
||||||
|
description: str = Field(
|
||||||
|
..., description="""Description of this collection of processed data."""
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, Union[DynamicTable, NWBDataInterface]]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}, {"range": "DynamicTable"}]}
|
"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}, {"range": "DynamicTable"}]}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class Images(NWBDataInterface):
|
class Images(NWBDataInterface):
|
||||||
|
@ -353,7 +356,7 @@ class Images(NWBDataInterface):
|
||||||
|
|
||||||
name: str = Field("Images", json_schema_extra={"linkml_meta": {"ifabsent": "string(Images)"}})
|
name: str = Field("Images", json_schema_extra={"linkml_meta": {"ifabsent": "string(Images)"}})
|
||||||
description: str = Field(..., description="""Description of this collection of images.""")
|
description: str = Field(..., description="""Description of this collection of images.""")
|
||||||
image: List[Image] = Field(..., description="""Images stored in this collection.""")
|
image: List[str] = Field(..., description="""Images stored in this collection.""")
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
|
|
|
@ -213,6 +213,16 @@ class SpatialSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Optional[str] = Field(
|
unit: Optional[str] = Field(
|
||||||
"meters",
|
"meters",
|
||||||
description="""Base unit of measurement for working with the data. The default value is 'meters'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
description="""Base unit of measurement for working with the data. The default value is 'meters'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
|
@ -220,8 +230,8 @@ class SpatialSeriesData(ConfiguredBaseModel):
|
||||||
)
|
)
|
||||||
value: Optional[
|
value: Optional[
|
||||||
Union[
|
Union[
|
||||||
NDArray[Shape["* num_times"], float],
|
NDArray[Shape["* num_times"], float | int],
|
||||||
NDArray[Shape["* num_times, * num_features"], float],
|
NDArray[Shape["* num_times, * num_features"], float | int],
|
||||||
]
|
]
|
||||||
] = Field(None)
|
] = Field(None)
|
||||||
|
|
||||||
|
@ -235,10 +245,13 @@ class BehavioralEpochs(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[IntervalSeries]] = Field(
|
name: str = Field(
|
||||||
|
"BehavioralEpochs",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(BehavioralEpochs)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, IntervalSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "IntervalSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "IntervalSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class BehavioralEvents(NWBDataInterface):
|
class BehavioralEvents(NWBDataInterface):
|
||||||
|
@ -250,10 +263,13 @@ class BehavioralEvents(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[TimeSeries]] = Field(
|
name: str = Field(
|
||||||
|
"BehavioralEvents",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(BehavioralEvents)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class BehavioralTimeSeries(NWBDataInterface):
|
class BehavioralTimeSeries(NWBDataInterface):
|
||||||
|
@ -265,10 +281,13 @@ class BehavioralTimeSeries(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[TimeSeries]] = Field(
|
name: str = Field(
|
||||||
|
"BehavioralTimeSeries",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(BehavioralTimeSeries)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class PupilTracking(NWBDataInterface):
|
class PupilTracking(NWBDataInterface):
|
||||||
|
@ -280,10 +299,12 @@ class PupilTracking(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[TimeSeries]] = Field(
|
name: str = Field(
|
||||||
|
"PupilTracking", json_schema_extra={"linkml_meta": {"ifabsent": "string(PupilTracking)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class EyeTracking(NWBDataInterface):
|
class EyeTracking(NWBDataInterface):
|
||||||
|
@ -295,10 +316,12 @@ class EyeTracking(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[SpatialSeries]] = Field(
|
name: str = Field(
|
||||||
|
"EyeTracking", json_schema_extra={"linkml_meta": {"ifabsent": "string(EyeTracking)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, SpatialSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class CompassDirection(NWBDataInterface):
|
class CompassDirection(NWBDataInterface):
|
||||||
|
@ -310,10 +333,13 @@ class CompassDirection(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[SpatialSeries]] = Field(
|
name: str = Field(
|
||||||
|
"CompassDirection",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(CompassDirection)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, SpatialSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class Position(NWBDataInterface):
|
class Position(NWBDataInterface):
|
||||||
|
@ -325,10 +351,12 @@ class Position(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[SpatialSeries]] = Field(
|
name: str = Field(
|
||||||
|
"Position", json_schema_extra={"linkml_meta": {"ifabsent": "string(Position)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, SpatialSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
|
|
|
@ -190,11 +190,12 @@ class ElectricalSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: Union[
|
channel_conversion: Optional[NDArray[Shape["* num_channels"], float]] = Field(
|
||||||
NDArray[Shape["* num_times"], float],
|
None,
|
||||||
NDArray[Shape["* num_times, * num_channels"], float],
|
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.""",
|
||||||
NDArray[Shape["* num_times, * num_channels, * num_samples"], float],
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_channels"}]}}},
|
||||||
] = Field(..., description="""Recorded voltage data.""")
|
)
|
||||||
|
data: ElectricalSeriesData = Field(..., description="""Recorded voltage data.""")
|
||||||
electrodes: Named[DynamicTableRegion] = Field(
|
electrodes: Named[DynamicTableRegion] = Field(
|
||||||
...,
|
...,
|
||||||
description="""DynamicTableRegion pointer to the electrodes that this time series was generated from.""",
|
description="""DynamicTableRegion pointer to the electrodes that this time series was generated from.""",
|
||||||
|
@ -207,11 +208,6 @@ class ElectricalSeries(TimeSeries):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
channel_conversion: Optional[NDArray[Shape["* num_channels"], float]] = Field(
|
|
||||||
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.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_channels"}]}}},
|
|
||||||
)
|
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
description="""Description of the time series.""",
|
description="""Description of the time series.""",
|
||||||
|
@ -249,6 +245,41 @@ class ElectricalSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ElectricalSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Recorded voltage data.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.ecephys"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["volts"] = Field(
|
||||||
|
"volts",
|
||||||
|
description="""Base unit of measurement for working with the data. This value is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion' and 'channel_conversion' (if present).""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
|
)
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* num_times"], float | int],
|
||||||
|
NDArray[Shape["* num_times, * num_channels"], float | int],
|
||||||
|
NDArray[Shape["* num_times, * num_channels, * num_samples"], float | int],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class SpikeEventSeries(ElectricalSeries):
|
class SpikeEventSeries(ElectricalSeries):
|
||||||
"""
|
"""
|
||||||
Stores snapshots/snippets of recorded spike events (i.e., threshold crossings). This may also be raw data, as reported by ephys hardware. If so, the TimeSeries::description field should describe how events were detected. All SpikeEventSeries should reside in a module (under EventWaveform interface) even if the spikes were reported and stored by hardware. All events span the same recording channels and store snapshots of equal duration. TimeSeries::data array structure: [num events] [num channels] [num samples] (or [num events] [num samples] for single electrode).
|
Stores snapshots/snippets of recorded spike events (i.e., threshold crossings). This may also be raw data, as reported by ephys hardware. If so, the TimeSeries::description field should describe how events were detected. All SpikeEventSeries should reside in a module (under EventWaveform interface) even if the spikes were reported and stored by hardware. All events span the same recording channels and store snapshots of equal duration. TimeSeries::data array structure: [num events] [num channels] [num samples] (or [num events] [num samples] for single electrode).
|
||||||
|
@ -259,15 +290,17 @@ class SpikeEventSeries(ElectricalSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: Union[
|
data: SpikeEventSeriesData = Field(..., description="""Spike waveforms.""")
|
||||||
NDArray[Shape["* num_events, * num_samples"], float],
|
|
||||||
NDArray[Shape["* num_events, * num_channels, * num_samples"], float],
|
|
||||||
] = Field(..., description="""Spike waveforms.""")
|
|
||||||
timestamps: NDArray[Shape["* num_times"], float] = Field(
|
timestamps: NDArray[Shape["* num_times"], float] = Field(
|
||||||
...,
|
...,
|
||||||
description="""Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. Timestamps are required for the events. Unlike for TimeSeries, timestamps are required for SpikeEventSeries and are thus re-specified here.""",
|
description="""Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. Timestamps are required for the events. Unlike for TimeSeries, timestamps are required for SpikeEventSeries and are thus re-specified here.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
||||||
)
|
)
|
||||||
|
channel_conversion: Optional[NDArray[Shape["* num_channels"], float]] = Field(
|
||||||
|
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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_channels"}]}}},
|
||||||
|
)
|
||||||
electrodes: Named[DynamicTableRegion] = Field(
|
electrodes: Named[DynamicTableRegion] = Field(
|
||||||
...,
|
...,
|
||||||
description="""DynamicTableRegion pointer to the electrodes that this time series was generated from.""",
|
description="""DynamicTableRegion pointer to the electrodes that this time series was generated from.""",
|
||||||
|
@ -280,11 +313,6 @@ class SpikeEventSeries(ElectricalSeries):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
channel_conversion: Optional[NDArray[Shape["* num_channels"], float]] = Field(
|
|
||||||
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.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_channels"}]}}},
|
|
||||||
)
|
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
description="""Description of the time series.""",
|
description="""Description of the time series.""",
|
||||||
|
@ -317,6 +345,40 @@ class SpikeEventSeries(ElectricalSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class SpikeEventSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Spike waveforms.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.ecephys"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["volts"] = Field(
|
||||||
|
"volts",
|
||||||
|
description="""Unit of measurement for waveforms, which is fixed to 'volts'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
|
)
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* num_events, * num_samples"], float | int],
|
||||||
|
NDArray[Shape["* num_events, * num_channels, * num_samples"], float | int],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class FeatureExtraction(NWBDataInterface):
|
class FeatureExtraction(NWBDataInterface):
|
||||||
"""
|
"""
|
||||||
Features, such as PC1 and PC2, that are extracted from signals stored in a SpikeEventSeries or other source.
|
Features, such as PC1 and PC2, that are extracted from signals stored in a SpikeEventSeries or other source.
|
||||||
|
@ -415,10 +477,12 @@ class EventWaveform(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[SpikeEventSeries]] = Field(
|
name: str = Field(
|
||||||
|
"EventWaveform", json_schema_extra={"linkml_meta": {"ifabsent": "string(EventWaveform)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, SpikeEventSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpikeEventSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpikeEventSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class FilteredEphys(NWBDataInterface):
|
class FilteredEphys(NWBDataInterface):
|
||||||
|
@ -430,10 +494,12 @@ class FilteredEphys(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[ElectricalSeries]] = Field(
|
name: str = Field(
|
||||||
|
"FilteredEphys", json_schema_extra={"linkml_meta": {"ifabsent": "string(FilteredEphys)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, ElectricalSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "ElectricalSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "ElectricalSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class LFP(NWBDataInterface):
|
class LFP(NWBDataInterface):
|
||||||
|
@ -445,10 +511,10 @@ class LFP(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[ElectricalSeries]] = Field(
|
name: str = Field("LFP", json_schema_extra={"linkml_meta": {"ifabsent": "string(LFP)"}})
|
||||||
|
value: Optional[Dict[str, ElectricalSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "ElectricalSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "ElectricalSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class ElectrodeGroup(NWBContainer):
|
class ElectrodeGroup(NWBContainer):
|
||||||
|
@ -591,7 +657,9 @@ class Clustering(NWBDataInterface):
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
ElectricalSeries.model_rebuild()
|
ElectricalSeries.model_rebuild()
|
||||||
|
ElectricalSeriesData.model_rebuild()
|
||||||
SpikeEventSeries.model_rebuild()
|
SpikeEventSeries.model_rebuild()
|
||||||
|
SpikeEventSeriesData.model_rebuild()
|
||||||
FeatureExtraction.model_rebuild()
|
FeatureExtraction.model_rebuild()
|
||||||
EventDetection.model_rebuild()
|
EventDetection.model_rebuild()
|
||||||
EventWaveform.model_rebuild()
|
EventWaveform.model_rebuild()
|
||||||
|
|
|
@ -247,9 +247,6 @@ class TimeIntervals(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class TimeIntervalsTimeseries(VectorData):
|
class TimeIntervalsTimeseries(VectorData):
|
||||||
|
|
|
@ -211,28 +211,28 @@ class NWBFile(NWBContainer):
|
||||||
...,
|
...,
|
||||||
description="""Date and time corresponding to time zero of all timestamps. The date is stored in UTC with local timezone offset as ISO 8601 extended formatted string: 2018-09-28T14:43:54.123+02:00. Dates stored in UTC end in \"Z\" with no timezone offset. Date accuracy is up to milliseconds. All times stored in the file use this time as reference (i.e., time zero).""",
|
description="""Date and time corresponding to time zero of all timestamps. The date is stored in UTC with local timezone offset as ISO 8601 extended formatted string: 2018-09-28T14:43:54.123+02:00. Dates stored in UTC end in \"Z\" with no timezone offset. Date accuracy is up to milliseconds. All times stored in the file use this time as reference (i.e., time zero).""",
|
||||||
)
|
)
|
||||||
acquisition: Optional[List[Union[DynamicTable, NWBDataInterface]]] = Field(
|
acquisition: Optional[Dict[str, Union[DynamicTable, NWBDataInterface]]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Data streams recorded from the system, including ephys, ophys, tracking, etc. This group should be read-only after the experiment is completed and timestamps are corrected to a common timebase. The data stored here may be links to raw data stored in external NWB files. This will allow keeping bulky raw data out of the file while preserving the option of keeping some/all in the file. Acquired data includes tracking and experimental data streams (i.e., everything measured from the system). If bulky data is stored in the /acquisition group, the data can exist in a separate NWB file that is linked to by the file being used for processing and analysis.""",
|
description="""Data streams recorded from the system, including ephys, ophys, tracking, etc. This group should be read-only after the experiment is completed and timestamps are corrected to a common timebase. The data stored here may be links to raw data stored in external NWB files. This will allow keeping bulky raw data out of the file while preserving the option of keeping some/all in the file. Acquired data includes tracking and experimental data streams (i.e., everything measured from the system). If bulky data is stored in the /acquisition group, the data can exist in a separate NWB file that is linked to by the file being used for processing and analysis.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}, {"range": "DynamicTable"}]}
|
"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}, {"range": "DynamicTable"}]}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
analysis: Optional[List[Union[DynamicTable, NWBContainer]]] = Field(
|
analysis: Optional[Dict[str, Union[DynamicTable, NWBContainer]]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Lab-specific and custom scientific analysis of data. There is no defined format for the content of this group - the format is up to the individual user/lab. To facilitate sharing analysis data between labs, the contents here should be stored in standard types (e.g., neurodata_types) and appropriately documented. The file can store lab-specific and custom data analysis without restriction on its form or schema, reducing data formatting restrictions on end users. Such data should be placed in the analysis group. The analysis data should be documented so that it could be shared with other labs.""",
|
description="""Lab-specific and custom scientific analysis of data. There is no defined format for the content of this group - the format is up to the individual user/lab. To facilitate sharing analysis data between labs, the contents here should be stored in standard types (e.g., neurodata_types) and appropriately documented. The file can store lab-specific and custom data analysis without restriction on its form or schema, reducing data formatting restrictions on end users. Such data should be placed in the analysis group. The analysis data should be documented so that it could be shared with other labs.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"any_of": [{"range": "NWBContainer"}, {"range": "DynamicTable"}]}
|
"linkml_meta": {"any_of": [{"range": "NWBContainer"}, {"range": "DynamicTable"}]}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
scratch: Optional[List[Union[DynamicTable, NWBContainer]]] = Field(
|
scratch: Optional[Dict[str, Union[DynamicTable, NWBContainer]]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""A place to store one-off analysis results. Data placed here is not intended for sharing. By placing data here, users acknowledge that there is no guarantee that their data meets any standard.""",
|
description="""A place to store one-off analysis results. Data placed here is not intended for sharing. By placing data here, users acknowledge that there is no guarantee that their data meets any standard.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"any_of": [{"range": "NWBContainer"}, {"range": "DynamicTable"}]}
|
"linkml_meta": {"any_of": [{"range": "NWBContainer"}, {"range": "DynamicTable"}]}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
processing: Optional[List[ProcessingModule]] = Field(
|
processing: Optional[Dict[str, ProcessingModule]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""The home for ProcessingModules. These modules perform intermediate analysis of data that is necessary to perform before scientific analysis. Examples include spike clustering, extracting position from tracking data, stitching together image slices. ProcessingModules can be large and express many data sets from relatively complex analysis (e.g., spike detection and clustering) or small, representing extraction of position information from tracking video, or even binary lick/no-lick decisions. Common software tools (e.g., klustakwik, MClust) are expected to read/write data here. 'Processing' refers to intermediate analysis of the acquired data to make it more amenable to scientific analysis.""",
|
description="""The home for ProcessingModules. These modules perform intermediate analysis of data that is necessary to perform before scientific analysis. Examples include spike clustering, extracting position from tracking data, stitching together image slices. ProcessingModules can be large and express many data sets from relatively complex analysis (e.g., spike detection and clustering) or small, representing extraction of position information from tracking video, or even binary lick/no-lick decisions. Common software tools (e.g., klustakwik, MClust) are expected to read/write data here. 'Processing' refers to intermediate analysis of the acquired data to make it more amenable to scientific analysis.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ProcessingModule"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ProcessingModule"}]}},
|
||||||
|
@ -250,6 +250,9 @@ class NWBFile(NWBContainer):
|
||||||
description="""Experimental intervals, whether that be logically distinct sub-experiments having a particular scientific goal, trials (see trials subgroup) during an experiment, or epochs (see epochs subgroup) deriving from analysis of data.""",
|
description="""Experimental intervals, whether that be logically distinct sub-experiments having a particular scientific goal, trials (see trials subgroup) during an experiment, or epochs (see epochs subgroup) deriving from analysis of data.""",
|
||||||
)
|
)
|
||||||
units: Optional[Units] = Field(None, description="""Data about sorted spike units.""")
|
units: Optional[Units] = Field(None, description="""Data about sorted spike units.""")
|
||||||
|
specifications: Optional[dict] = Field(
|
||||||
|
None, description="""Nested dictionary of schema specifications"""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class NWBFileStimulus(ConfiguredBaseModel):
|
class NWBFileStimulus(ConfiguredBaseModel):
|
||||||
|
@ -265,12 +268,12 @@ class NWBFileStimulus(ConfiguredBaseModel):
|
||||||
"linkml_meta": {"equals_string": "stimulus", "ifabsent": "string(stimulus)"}
|
"linkml_meta": {"equals_string": "stimulus", "ifabsent": "string(stimulus)"}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
presentation: Optional[List[TimeSeries]] = Field(
|
presentation: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Stimuli presented during the experiment.""",
|
description="""Stimuli presented during the experiment.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}},
|
||||||
)
|
)
|
||||||
templates: Optional[List[TimeSeries]] = Field(
|
templates: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None,
|
None,
|
||||||
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.""",
|
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.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}},
|
||||||
|
@ -348,11 +351,11 @@ class NWBFileGeneral(ConfiguredBaseModel):
|
||||||
None,
|
None,
|
||||||
description="""Information about virus(es) used in experiments, including virus ID, source, date made, injection location, volume, etc.""",
|
description="""Information about virus(es) used in experiments, including virus ID, source, date made, injection location, volume, etc.""",
|
||||||
)
|
)
|
||||||
nwb_container: Optional[List[NWBContainer]] = Field(
|
nwb_container: Optional[Dict[str, NWBContainer]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Place-holder than can be extended so that lab-specific meta-data can be placed in /general.""",
|
description="""Place-holder than can be extended so that lab-specific meta-data can be placed in /general.""",
|
||||||
)
|
)
|
||||||
devices: Optional[List[Device]] = Field(
|
devices: Optional[Dict[str, Device]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Description of hardware devices used during experiment, e.g., monitors, ADC boards, microscopes, etc.""",
|
description="""Description of hardware devices used during experiment, e.g., monitors, ADC boards, microscopes, etc.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "Device"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "Device"}]}},
|
||||||
|
@ -367,12 +370,12 @@ class NWBFileGeneral(ConfiguredBaseModel):
|
||||||
intracellular_ephys: Optional[GeneralIntracellularEphys] = Field(
|
intracellular_ephys: Optional[GeneralIntracellularEphys] = Field(
|
||||||
None, description="""Metadata related to intracellular electrophysiology."""
|
None, description="""Metadata related to intracellular electrophysiology."""
|
||||||
)
|
)
|
||||||
optogenetics: Optional[List[OptogeneticStimulusSite]] = Field(
|
optogenetics: Optional[Dict[str, OptogeneticStimulusSite]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Metadata describing optogenetic stimuluation.""",
|
description="""Metadata describing optogenetic stimuluation.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "OptogeneticStimulusSite"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "OptogeneticStimulusSite"}]}},
|
||||||
)
|
)
|
||||||
optophysiology: Optional[List[ImagingPlane]] = Field(
|
optophysiology: Optional[Dict[str, ImagingPlane]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Metadata related to optophysiology.""",
|
description="""Metadata related to optophysiology.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ImagingPlane"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ImagingPlane"}]}},
|
||||||
|
@ -450,12 +453,12 @@ class GeneralExtracellularEphys(ConfiguredBaseModel):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
electrode_group: Optional[List[ElectrodeGroup]] = Field(
|
|
||||||
None, description="""Physical group of electrodes."""
|
|
||||||
)
|
|
||||||
electrodes: Optional[ExtracellularEphysElectrodes] = Field(
|
electrodes: Optional[ExtracellularEphysElectrodes] = Field(
|
||||||
None, description="""A table of all electrodes (i.e. channels) used for recording."""
|
None, description="""A table of all electrodes (i.e. channels) used for recording."""
|
||||||
)
|
)
|
||||||
|
value: Optional[Dict[str, ElectrodeGroup]] = Field(
|
||||||
|
None, description="""Physical group of electrodes."""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ExtracellularEphysElectrodes(DynamicTable):
|
class ExtracellularEphysElectrodes(DynamicTable):
|
||||||
|
@ -525,8 +528,14 @@ class ExtracellularEphysElectrodes(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
group: List[ElectrodeGroup] = Field(
|
group: VectorData[NDArray[Any, ElectrodeGroup]] = Field(
|
||||||
..., description="""Reference to the ElectrodeGroup this electrode is a part of."""
|
...,
|
||||||
|
description="""Reference to the ElectrodeGroup this electrode is a part of.""",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {
|
||||||
|
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
||||||
|
}
|
||||||
|
},
|
||||||
)
|
)
|
||||||
group_name: VectorData[NDArray[Any, str]] = Field(
|
group_name: VectorData[NDArray[Any, str]] = Field(
|
||||||
...,
|
...,
|
||||||
|
@ -583,9 +592,6 @@ class ExtracellularEphysElectrodes(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class GeneralIntracellularEphys(ConfiguredBaseModel):
|
class GeneralIntracellularEphys(ConfiguredBaseModel):
|
||||||
|
@ -608,12 +614,12 @@ class GeneralIntracellularEphys(ConfiguredBaseModel):
|
||||||
None,
|
None,
|
||||||
description="""Description of filtering used. Includes filtering type and parameters, frequency fall-off, etc. If this changes between TimeSeries, filter description should be stored as a text attribute for each TimeSeries.""",
|
description="""Description of filtering used. Includes filtering type and parameters, frequency fall-off, etc. If this changes between TimeSeries, filter description should be stored as a text attribute for each TimeSeries.""",
|
||||||
)
|
)
|
||||||
intracellular_electrode: Optional[List[IntracellularElectrode]] = Field(
|
|
||||||
None, description="""An intracellular electrode."""
|
|
||||||
)
|
|
||||||
sweep_table: Optional[SweepTable] = Field(
|
sweep_table: Optional[SweepTable] = Field(
|
||||||
None, description="""The table which groups different PatchClampSeries together."""
|
None, description="""The table which groups different PatchClampSeries together."""
|
||||||
)
|
)
|
||||||
|
value: Optional[Dict[str, IntracellularElectrode]] = Field(
|
||||||
|
None, description="""An intracellular electrode."""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class NWBFileIntervals(ConfiguredBaseModel):
|
class NWBFileIntervals(ConfiguredBaseModel):
|
||||||
|
@ -639,7 +645,7 @@ class NWBFileIntervals(ConfiguredBaseModel):
|
||||||
invalid_times: Optional[TimeIntervals] = Field(
|
invalid_times: Optional[TimeIntervals] = Field(
|
||||||
None, description="""Time intervals that should be removed from analysis."""
|
None, description="""Time intervals that should be removed from analysis."""
|
||||||
)
|
)
|
||||||
time_intervals: Optional[List[TimeIntervals]] = Field(
|
value: Optional[Dict[str, TimeIntervals]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Optional additional table(s) for describing other experimental time intervals.""",
|
description="""Optional additional table(s) for describing other experimental time intervals.""",
|
||||||
)
|
)
|
||||||
|
|
|
@ -262,11 +262,21 @@ class PatchClampSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: str = Field(
|
unit: str = Field(
|
||||||
...,
|
...,
|
||||||
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'.""",
|
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'.""",
|
||||||
)
|
)
|
||||||
value: Optional[NDArray[Shape["* num_times"], float]] = Field(
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -281,12 +291,12 @@ class CurrentClampSeries(PatchClampSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: CurrentClampSeriesData = Field(..., description="""Recorded voltage.""")
|
|
||||||
bias_current: Optional[float] = Field(None, description="""Bias current, in amps.""")
|
bias_current: Optional[float] = Field(None, description="""Bias current, in amps.""")
|
||||||
bridge_balance: Optional[float] = Field(None, description="""Bridge balance, in ohms.""")
|
bridge_balance: Optional[float] = Field(None, description="""Bridge balance, in ohms.""")
|
||||||
capacitance_compensation: Optional[float] = Field(
|
capacitance_compensation: Optional[float] = Field(
|
||||||
None, description="""Capacitance compensation, in farads."""
|
None, description="""Capacitance compensation, in farads."""
|
||||||
)
|
)
|
||||||
|
data: CurrentClampSeriesData = Field(..., description="""Recorded voltage.""")
|
||||||
stimulus_description: str = Field(
|
stimulus_description: str = Field(
|
||||||
..., description="""Protocol/stimulus name for this patch-clamp dataset."""
|
..., description="""Protocol/stimulus name for this patch-clamp dataset."""
|
||||||
)
|
)
|
||||||
|
@ -354,12 +364,24 @@ class CurrentClampSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Literal["volts"] = Field(
|
unit: Literal["volts"] = Field(
|
||||||
"volts",
|
"volts",
|
||||||
description="""Base unit of measurement for working with the data. which is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
description="""Base unit of measurement for working with the data. which is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
)
|
)
|
||||||
value: Any = Field(...)
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class IZeroClampSeries(CurrentClampSeries):
|
class IZeroClampSeries(CurrentClampSeries):
|
||||||
|
@ -512,6 +534,16 @@ class CurrentClampStimulusSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Literal["amperes"] = Field(
|
unit: Literal["amperes"] = Field(
|
||||||
"amperes",
|
"amperes",
|
||||||
description="""Base unit of measurement for working with the data. which is fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
description="""Base unit of measurement for working with the data. which is fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
|
@ -519,7 +551,9 @@ class CurrentClampStimulusSeriesData(ConfiguredBaseModel):
|
||||||
"linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"}
|
"linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
value: Any = Field(...)
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class VoltageClampSeries(PatchClampSeries):
|
class VoltageClampSeries(PatchClampSeries):
|
||||||
|
@ -532,13 +566,13 @@ class VoltageClampSeries(PatchClampSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: VoltageClampSeriesData = Field(..., description="""Recorded current.""")
|
|
||||||
capacitance_fast: Optional[VoltageClampSeriesCapacitanceFast] = Field(
|
capacitance_fast: Optional[VoltageClampSeriesCapacitanceFast] = Field(
|
||||||
None, description="""Fast capacitance, in farads."""
|
None, description="""Fast capacitance, in farads."""
|
||||||
)
|
)
|
||||||
capacitance_slow: Optional[VoltageClampSeriesCapacitanceSlow] = Field(
|
capacitance_slow: Optional[VoltageClampSeriesCapacitanceSlow] = Field(
|
||||||
None, description="""Slow capacitance, in farads."""
|
None, description="""Slow capacitance, in farads."""
|
||||||
)
|
)
|
||||||
|
data: VoltageClampSeriesData = Field(..., description="""Recorded current.""")
|
||||||
resistance_comp_bandwidth: Optional[VoltageClampSeriesResistanceCompBandwidth] = Field(
|
resistance_comp_bandwidth: Optional[VoltageClampSeriesResistanceCompBandwidth] = Field(
|
||||||
None, description="""Resistance compensation bandwidth, in hertz."""
|
None, description="""Resistance compensation bandwidth, in hertz."""
|
||||||
)
|
)
|
||||||
|
@ -610,27 +644,6 @@ class VoltageClampSeries(PatchClampSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class VoltageClampSeriesData(ConfiguredBaseModel):
|
|
||||||
"""
|
|
||||||
Recorded current.
|
|
||||||
"""
|
|
||||||
|
|
||||||
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.icephys"})
|
|
||||||
|
|
||||||
name: Literal["data"] = Field(
|
|
||||||
"data",
|
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
|
||||||
)
|
|
||||||
unit: Literal["amperes"] = Field(
|
|
||||||
"amperes",
|
|
||||||
description="""Base unit of measurement for working with the data. which is fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
|
||||||
json_schema_extra={
|
|
||||||
"linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"}
|
|
||||||
},
|
|
||||||
)
|
|
||||||
value: Any = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class VoltageClampSeriesCapacitanceFast(ConfiguredBaseModel):
|
class VoltageClampSeriesCapacitanceFast(ConfiguredBaseModel):
|
||||||
"""
|
"""
|
||||||
Fast capacitance, in farads.
|
Fast capacitance, in farads.
|
||||||
|
@ -683,6 +696,39 @@ class VoltageClampSeriesCapacitanceSlow(ConfiguredBaseModel):
|
||||||
value: float = Field(...)
|
value: float = Field(...)
|
||||||
|
|
||||||
|
|
||||||
|
class VoltageClampSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Recorded current.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.icephys"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["amperes"] = Field(
|
||||||
|
"amperes",
|
||||||
|
description="""Base unit of measurement for working with the data. which is fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class VoltageClampSeriesResistanceCompBandwidth(ConfiguredBaseModel):
|
class VoltageClampSeriesResistanceCompBandwidth(ConfiguredBaseModel):
|
||||||
"""
|
"""
|
||||||
Resistance compensation bandwidth, in hertz.
|
Resistance compensation bandwidth, in hertz.
|
||||||
|
@ -887,12 +933,24 @@ class VoltageClampStimulusSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Literal["volts"] = Field(
|
unit: Literal["volts"] = Field(
|
||||||
"volts",
|
"volts",
|
||||||
description="""Base unit of measurement for working with the data. which is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
description="""Base unit of measurement for working with the data. which is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
)
|
)
|
||||||
value: Any = Field(...)
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class IntracellularElectrode(NWBContainer):
|
class IntracellularElectrode(NWBContainer):
|
||||||
|
@ -942,18 +1000,15 @@ class SweepTable(DynamicTable):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
sweep_number: VectorData[NDArray[Any, int]] = Field(
|
series: VectorData[NDArray[Any, PatchClampSeries]] = Field(
|
||||||
...,
|
...,
|
||||||
description="""Sweep number of the PatchClampSeries in that row.""",
|
description="""The PatchClampSeries with the sweep number in that row.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
series: List[PatchClampSeries] = Field(
|
|
||||||
..., description="""The PatchClampSeries with the sweep number in that row."""
|
|
||||||
)
|
|
||||||
series_index: Named[VectorIndex] = Field(
|
series_index: Named[VectorIndex] = Field(
|
||||||
...,
|
...,
|
||||||
description="""Index for series.""",
|
description="""Index for series.""",
|
||||||
|
@ -966,6 +1021,15 @@ class SweepTable(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
sweep_number: VectorData[NDArray[Any, int]] = Field(
|
||||||
|
...,
|
||||||
|
description="""Sweep number of the PatchClampSeries in that row.""",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {
|
||||||
|
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
)
|
||||||
colnames: List[str] = Field(
|
colnames: List[str] = Field(
|
||||||
...,
|
...,
|
||||||
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
|
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
|
||||||
|
@ -976,9 +1040,6 @@ class SweepTable(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
|
@ -991,9 +1052,9 @@ IZeroClampSeries.model_rebuild()
|
||||||
CurrentClampStimulusSeries.model_rebuild()
|
CurrentClampStimulusSeries.model_rebuild()
|
||||||
CurrentClampStimulusSeriesData.model_rebuild()
|
CurrentClampStimulusSeriesData.model_rebuild()
|
||||||
VoltageClampSeries.model_rebuild()
|
VoltageClampSeries.model_rebuild()
|
||||||
VoltageClampSeriesData.model_rebuild()
|
|
||||||
VoltageClampSeriesCapacitanceFast.model_rebuild()
|
VoltageClampSeriesCapacitanceFast.model_rebuild()
|
||||||
VoltageClampSeriesCapacitanceSlow.model_rebuild()
|
VoltageClampSeriesCapacitanceSlow.model_rebuild()
|
||||||
|
VoltageClampSeriesData.model_rebuild()
|
||||||
VoltageClampSeriesResistanceCompBandwidth.model_rebuild()
|
VoltageClampSeriesResistanceCompBandwidth.model_rebuild()
|
||||||
VoltageClampSeriesResistanceCompCorrection.model_rebuild()
|
VoltageClampSeriesResistanceCompCorrection.model_rebuild()
|
||||||
VoltageClampSeriesResistanceCompPrediction.model_rebuild()
|
VoltageClampSeriesResistanceCompPrediction.model_rebuild()
|
||||||
|
|
|
@ -152,7 +152,7 @@ class GrayscaleImage(Image):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
value: Optional[NDArray[Shape["* x, * y"], float]] = Field(
|
value: Optional[NDArray[Shape["* x, * y"], float | int]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"array": {"dimensions": [{"alias": "x"}, {"alias": "y"}]}}
|
"linkml_meta": {"array": {"dimensions": [{"alias": "x"}, {"alias": "y"}]}}
|
||||||
|
@ -174,7 +174,7 @@ class RGBImage(Image):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
value: Optional[NDArray[Shape["* x, * y, 3 r_g_b"], float]] = Field(
|
value: Optional[NDArray[Shape["* x, * y, 3 r_g_b"], float | int]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
|
@ -204,7 +204,7 @@ class RGBAImage(Image):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
value: Optional[NDArray[Shape["* x, * y, 4 r_g_b_a"], float]] = Field(
|
value: Optional[NDArray[Shape["* x, * y, 4 r_g_b_a"], float | int]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
|
@ -234,12 +234,9 @@ class ImageSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: Optional[
|
data: Optional[ImageSeriesData] = Field(
|
||||||
Union[
|
None, description="""Binary data representing images across frames."""
|
||||||
NDArray[Shape["* frame, * x, * y"], float],
|
)
|
||||||
NDArray[Shape["* frame, * x, * y, * z"], float],
|
|
||||||
]
|
|
||||||
] = Field(None, description="""Binary data representing images across frames.""")
|
|
||||||
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Number of pixels on x, y, (and z) axes.""",
|
description="""Number of pixels on x, y, (and z) axes.""",
|
||||||
|
@ -250,8 +247,9 @@ class ImageSeries(TimeSeries):
|
||||||
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
||||||
)
|
)
|
||||||
format: Optional[str] = Field(
|
format: Optional[str] = Field(
|
||||||
None,
|
"raw",
|
||||||
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="""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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(raw)"}},
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -290,6 +288,39 @@ class ImageSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ImageSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Binary data representing images across frames.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.image"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: str = Field(
|
||||||
|
...,
|
||||||
|
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'.""",
|
||||||
|
)
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* frame, * x, * y"], float | int],
|
||||||
|
NDArray[Shape["* frame, * x, * y, * z"], float | int],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class ImageSeriesExternalFile(ConfiguredBaseModel):
|
class ImageSeriesExternalFile(ConfiguredBaseModel):
|
||||||
"""
|
"""
|
||||||
Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.
|
Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.
|
||||||
|
@ -331,12 +362,9 @@ class ImageMaskSeries(ImageSeries):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
data: Optional[
|
data: Optional[ImageSeriesData] = Field(
|
||||||
Union[
|
None, description="""Binary data representing images across frames."""
|
||||||
NDArray[Shape["* frame, * x, * y"], float],
|
)
|
||||||
NDArray[Shape["* frame, * x, * y, * z"], float],
|
|
||||||
]
|
|
||||||
] = Field(None, description="""Binary data representing images across frames.""")
|
|
||||||
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Number of pixels on x, y, (and z) axes.""",
|
description="""Number of pixels on x, y, (and z) axes.""",
|
||||||
|
@ -347,8 +375,9 @@ class ImageMaskSeries(ImageSeries):
|
||||||
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
||||||
)
|
)
|
||||||
format: Optional[str] = Field(
|
format: Optional[str] = Field(
|
||||||
None,
|
"raw",
|
||||||
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="""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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(raw)"}},
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -397,6 +426,9 @@ class OpticalSeries(ImageSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
|
data: OpticalSeriesData = Field(
|
||||||
|
..., description="""Images presented to subject, either grayscale or RGB"""
|
||||||
|
)
|
||||||
distance: Optional[float] = Field(
|
distance: Optional[float] = Field(
|
||||||
None, description="""Distance from camera/monitor to target/eye."""
|
None, description="""Distance from camera/monitor to target/eye."""
|
||||||
)
|
)
|
||||||
|
@ -405,10 +437,6 @@ class OpticalSeries(ImageSeries):
|
||||||
NDArray[Shape["2 width_height"], float], NDArray[Shape["3 width_height_depth"], float]
|
NDArray[Shape["2 width_height"], float], NDArray[Shape["3 width_height_depth"], float]
|
||||||
]
|
]
|
||||||
] = Field(None, description="""Width, height and depth of image, or imaged area, in meters.""")
|
] = Field(None, description="""Width, height and depth of image, or imaged area, in meters.""")
|
||||||
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""")
|
|
||||||
orientation: Optional[str] = Field(
|
orientation: Optional[str] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Description of image relative to some reference frame (e.g., which way is up). Must also specify frame of reference.""",
|
description="""Description of image relative to some reference frame (e.g., which way is up). Must also specify frame of reference.""",
|
||||||
|
@ -423,8 +451,9 @@ class OpticalSeries(ImageSeries):
|
||||||
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
||||||
)
|
)
|
||||||
format: Optional[str] = Field(
|
format: Optional[str] = Field(
|
||||||
None,
|
"raw",
|
||||||
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="""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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(raw)"}},
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -463,6 +492,39 @@ class OpticalSeries(ImageSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class OpticalSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Images presented to subject, either grayscale or RGB
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.image"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: str = Field(
|
||||||
|
...,
|
||||||
|
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'.""",
|
||||||
|
)
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* frame, * x, * y"], float | int],
|
||||||
|
NDArray[Shape["* frame, * x, * y, 3 r_g_b"], float | int],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class IndexSeries(TimeSeries):
|
class IndexSeries(TimeSeries):
|
||||||
"""
|
"""
|
||||||
Stores indices to image frames stored in an ImageSeries. The purpose of the ImageIndexSeries is to allow a static image stack to be stored somewhere, and the images in the stack to be referenced out-of-order. This can be for the display of individual images, or of movie segments (as a movie is simply a series of images). The data field stores the index of the frame in the referenced ImageSeries, and the timestamps array indicates when that image was displayed.
|
Stores indices to image frames stored in an ImageSeries. The purpose of the ImageIndexSeries is to allow a static image stack to be stored somewhere, and the images in the stack to be referenced out-of-order. This can be for the display of individual images, or of movie segments (as a movie is simply a series of images). The data field stores the index of the frame in the referenced ImageSeries, and the timestamps array indicates when that image was displayed.
|
||||||
|
@ -473,10 +535,8 @@ class IndexSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: NDArray[Shape["* num_times"], int] = Field(
|
data: IndexSeriesData = Field(
|
||||||
...,
|
..., description="""Index of the frame in the referenced ImageSeries."""
|
||||||
description="""Index of the frame in the referenced ImageSeries.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
|
||||||
)
|
)
|
||||||
indexed_timeseries: Union[ImageSeries, str] = Field(
|
indexed_timeseries: Union[ImageSeries, str] = Field(
|
||||||
...,
|
...,
|
||||||
|
@ -524,13 +584,46 @@ class IndexSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class IndexSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Index of the frame in the referenced ImageSeries.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.image"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: str = Field(
|
||||||
|
...,
|
||||||
|
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'.""",
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
GrayscaleImage.model_rebuild()
|
GrayscaleImage.model_rebuild()
|
||||||
RGBImage.model_rebuild()
|
RGBImage.model_rebuild()
|
||||||
RGBAImage.model_rebuild()
|
RGBAImage.model_rebuild()
|
||||||
ImageSeries.model_rebuild()
|
ImageSeries.model_rebuild()
|
||||||
|
ImageSeriesData.model_rebuild()
|
||||||
ImageSeriesExternalFile.model_rebuild()
|
ImageSeriesExternalFile.model_rebuild()
|
||||||
ImageMaskSeries.model_rebuild()
|
ImageMaskSeries.model_rebuild()
|
||||||
OpticalSeries.model_rebuild()
|
OpticalSeries.model_rebuild()
|
||||||
|
OpticalSeriesData.model_rebuild()
|
||||||
IndexSeries.model_rebuild()
|
IndexSeries.model_rebuild()
|
||||||
|
IndexSeriesData.model_rebuild()
|
||||||
|
|
|
@ -251,6 +251,16 @@ class AbstractFeatureSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Optional[str] = Field(
|
unit: Optional[str] = Field(
|
||||||
"see ",
|
"see ",
|
||||||
description="""Since there can be different units for different features, store the units in 'feature_units'. The default value for this attribute is \"see 'feature_units'\".""",
|
description="""Since there can be different units for different features, store the units in 'feature_units'. The default value for this attribute is \"see 'feature_units'\".""",
|
||||||
|
@ -258,8 +268,8 @@ class AbstractFeatureSeriesData(ConfiguredBaseModel):
|
||||||
)
|
)
|
||||||
value: Optional[
|
value: Optional[
|
||||||
Union[
|
Union[
|
||||||
NDArray[Shape["* num_times"], float],
|
NDArray[Shape["* num_times"], float | int],
|
||||||
NDArray[Shape["* num_times, * num_features"], float],
|
NDArray[Shape["* num_times, * num_features"], float | int],
|
||||||
]
|
]
|
||||||
] = Field(None)
|
] = Field(None)
|
||||||
|
|
||||||
|
@ -274,10 +284,8 @@ class AnnotationSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: NDArray[Shape["* num_times"], str] = Field(
|
data: AnnotationSeriesData = Field(
|
||||||
...,
|
..., description="""Annotations made during an experiment."""
|
||||||
description="""Annotations made during an experiment.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -316,6 +324,39 @@ class AnnotationSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class AnnotationSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Annotations made during an experiment.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.misc"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: float = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data. Annotations have no units, so the value is fixed to -1.0.""",
|
||||||
|
le=-1,
|
||||||
|
ge=-1,
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["n/a"] = Field(
|
||||||
|
"n/a",
|
||||||
|
description="""Base unit of measurement for working with the data. Annotations have no units, so the value is fixed to 'n/a'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "n/a", "ifabsent": "string(n/a)"}},
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], str]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class IntervalSeries(TimeSeries):
|
class IntervalSeries(TimeSeries):
|
||||||
"""
|
"""
|
||||||
Stores intervals of data. The timestamps field stores the beginning and end of intervals. The data field stores whether the interval just started (>0 value) or ended (<0 value). Different interval types can be represented in the same series by using multiple key values (eg, 1 for feature A, 2 for feature B, 3 for feature C, etc). The field data stores an 8-bit integer. This is largely an alias of a standard TimeSeries but that is identifiable as representing time intervals in a machine-readable way.
|
Stores intervals of data. The timestamps field stores the beginning and end of intervals. The data field stores whether the interval just started (>0 value) or ended (<0 value). Different interval types can be represented in the same series by using multiple key values (eg, 1 for feature A, 2 for feature B, 3 for feature C, etc). The field data stores an 8-bit integer. This is largely an alias of a standard TimeSeries but that is identifiable as representing time intervals in a machine-readable way.
|
||||||
|
@ -326,10 +367,8 @@ class IntervalSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: NDArray[Shape["* num_times"], int] = Field(
|
data: IntervalSeriesData = Field(
|
||||||
...,
|
..., description="""Use values >0 if interval started, <0 if interval ended."""
|
||||||
description="""Use values >0 if interval started, <0 if interval ended.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -368,6 +407,39 @@ class IntervalSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class IntervalSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Use values >0 if interval started, <0 if interval ended.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.misc"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: float = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data. Annotations have no units, so the value is fixed to -1.0.""",
|
||||||
|
le=-1,
|
||||||
|
ge=-1,
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["n/a"] = Field(
|
||||||
|
"n/a",
|
||||||
|
description="""Base unit of measurement for working with the data. Annotations have no units, so the value is fixed to 'n/a'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "n/a", "ifabsent": "string(n/a)"}},
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class DecompositionSeries(TimeSeries):
|
class DecompositionSeries(TimeSeries):
|
||||||
"""
|
"""
|
||||||
Spectral analysis of a time series, e.g. of an LFP or a speech signal.
|
Spectral analysis of a time series, e.g. of an LFP or a speech signal.
|
||||||
|
@ -443,24 +515,36 @@ class DecompositionSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: str = Field(
|
unit: str = Field(
|
||||||
"no unit",
|
"no unit",
|
||||||
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'.""",
|
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'.""",
|
||||||
json_schema_extra={"linkml_meta": {"ifabsent": "string(no unit)"}},
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(no unit)"}},
|
||||||
)
|
)
|
||||||
value: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float]] = Field(
|
value: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float | int]] = (
|
||||||
None,
|
Field(
|
||||||
json_schema_extra={
|
None,
|
||||||
"linkml_meta": {
|
json_schema_extra={
|
||||||
"array": {
|
"linkml_meta": {
|
||||||
"dimensions": [
|
"array": {
|
||||||
{"alias": "num_times"},
|
"dimensions": [
|
||||||
{"alias": "num_channels"},
|
{"alias": "num_times"},
|
||||||
{"alias": "num_bands"},
|
{"alias": "num_channels"},
|
||||||
]
|
{"alias": "num_bands"},
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
},
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -518,9 +602,6 @@ class DecompositionSeriesBands(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class Units(DynamicTable):
|
class Units(DynamicTable):
|
||||||
|
@ -533,9 +614,18 @@ class Units(DynamicTable):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field("Units", json_schema_extra={"linkml_meta": {"ifabsent": "string(Units)"}})
|
name: str = Field("Units", json_schema_extra={"linkml_meta": {"ifabsent": "string(Units)"}})
|
||||||
spike_times_index: Optional[Named[VectorIndex]] = Field(
|
electrode_group: Optional[VectorData[NDArray[Any, ElectrodeGroup]]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Index into the spike_times dataset.""",
|
description="""Electrode group that each spike unit came from.""",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {
|
||||||
|
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
electrodes: Optional[Named[DynamicTableRegion]] = Field(
|
||||||
|
None,
|
||||||
|
description="""Electrode that each spike unit came from, specified using a DynamicTableRegion.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"annotations": {
|
"annotations": {
|
||||||
|
@ -545,12 +635,9 @@ class Units(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
spike_times: Optional[UnitsSpikeTimes] = Field(
|
electrodes_index: Optional[Named[VectorIndex]] = Field(
|
||||||
None, description="""Spike times for each unit."""
|
|
||||||
)
|
|
||||||
obs_intervals_index: Optional[Named[VectorIndex]] = Field(
|
|
||||||
None,
|
None,
|
||||||
description="""Index into the obs_intervals dataset.""",
|
description="""Index into electrodes.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"annotations": {
|
"annotations": {
|
||||||
|
@ -576,9 +663,9 @@ class Units(DynamicTable):
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
electrodes_index: Optional[Named[VectorIndex]] = Field(
|
obs_intervals_index: Optional[Named[VectorIndex]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Index into electrodes.""",
|
description="""Index into the obs_intervals dataset.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"annotations": {
|
"annotations": {
|
||||||
|
@ -588,9 +675,12 @@ class Units(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
electrodes: Optional[Named[DynamicTableRegion]] = Field(
|
spike_times: Optional[UnitsSpikeTimes] = Field(
|
||||||
|
None, description="""Spike times for each unit."""
|
||||||
|
)
|
||||||
|
spike_times_index: Optional[Named[VectorIndex]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Electrode that each spike unit came from, specified using a DynamicTableRegion.""",
|
description="""Index into the spike_times dataset.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"annotations": {
|
"annotations": {
|
||||||
|
@ -600,25 +690,12 @@ class Units(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
electrode_group: Optional[List[ElectrodeGroup]] = Field(
|
waveform_mean: Optional[UnitsWaveformMean] = Field(
|
||||||
None, description="""Electrode group that each spike unit came from."""
|
None, description="""Spike waveform mean for each spike unit."""
|
||||||
|
)
|
||||||
|
waveform_sd: Optional[UnitsWaveformSd] = Field(
|
||||||
|
None, description="""Spike waveform standard deviation for each spike unit."""
|
||||||
)
|
)
|
||||||
waveform_mean: Optional[
|
|
||||||
VectorData[
|
|
||||||
Union[
|
|
||||||
NDArray[Shape["* num_units, * num_samples"], float],
|
|
||||||
NDArray[Shape["* num_units, * num_samples, * num_electrodes"], float],
|
|
||||||
]
|
|
||||||
]
|
|
||||||
] = Field(None, description="""Spike waveform mean for each spike unit.""")
|
|
||||||
waveform_sd: Optional[
|
|
||||||
VectorData[
|
|
||||||
Union[
|
|
||||||
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.""")
|
|
||||||
colnames: List[str] = Field(
|
colnames: List[str] = Field(
|
||||||
...,
|
...,
|
||||||
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
|
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
|
||||||
|
@ -629,9 +706,6 @@ class Units(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class UnitsSpikeTimes(VectorData):
|
class UnitsSpikeTimes(VectorData):
|
||||||
|
@ -662,14 +736,78 @@ class UnitsSpikeTimes(VectorData):
|
||||||
] = Field(None)
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
|
class UnitsWaveformMean(VectorData):
|
||||||
|
"""
|
||||||
|
Spike waveform mean for each spike unit.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.misc"})
|
||||||
|
|
||||||
|
name: Literal["waveform_mean"] = Field(
|
||||||
|
"waveform_mean",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {"equals_string": "waveform_mean", "ifabsent": "string(waveform_mean)"}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
sampling_rate: Optional[float] = Field(None, description="""Sampling rate, in hertz.""")
|
||||||
|
unit: Optional[Literal["volts"]] = Field(
|
||||||
|
"volts",
|
||||||
|
description="""Unit of measurement. This value is fixed to 'volts'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
|
)
|
||||||
|
description: str = Field(..., description="""Description of what these vectors represent.""")
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* dim0"], Any],
|
||||||
|
NDArray[Shape["* dim0, * dim1"], Any],
|
||||||
|
NDArray[Shape["* dim0, * dim1, * dim2"], Any],
|
||||||
|
NDArray[Shape["* dim0, * dim1, * dim2, * dim3"], Any],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
|
class UnitsWaveformSd(VectorData):
|
||||||
|
"""
|
||||||
|
Spike waveform standard deviation for each spike unit.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.misc"})
|
||||||
|
|
||||||
|
name: Literal["waveform_sd"] = Field(
|
||||||
|
"waveform_sd",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {"equals_string": "waveform_sd", "ifabsent": "string(waveform_sd)"}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
sampling_rate: Optional[float] = Field(None, description="""Sampling rate, in hertz.""")
|
||||||
|
unit: Optional[Literal["volts"]] = Field(
|
||||||
|
"volts",
|
||||||
|
description="""Unit of measurement. This value is fixed to 'volts'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
|
)
|
||||||
|
description: str = Field(..., description="""Description of what these vectors represent.""")
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* dim0"], Any],
|
||||||
|
NDArray[Shape["* dim0, * dim1"], Any],
|
||||||
|
NDArray[Shape["* dim0, * dim1, * dim2"], Any],
|
||||||
|
NDArray[Shape["* dim0, * dim1, * dim2, * dim3"], Any],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
AbstractFeatureSeries.model_rebuild()
|
AbstractFeatureSeries.model_rebuild()
|
||||||
AbstractFeatureSeriesData.model_rebuild()
|
AbstractFeatureSeriesData.model_rebuild()
|
||||||
AnnotationSeries.model_rebuild()
|
AnnotationSeries.model_rebuild()
|
||||||
|
AnnotationSeriesData.model_rebuild()
|
||||||
IntervalSeries.model_rebuild()
|
IntervalSeries.model_rebuild()
|
||||||
|
IntervalSeriesData.model_rebuild()
|
||||||
DecompositionSeries.model_rebuild()
|
DecompositionSeries.model_rebuild()
|
||||||
DecompositionSeriesData.model_rebuild()
|
DecompositionSeriesData.model_rebuild()
|
||||||
DecompositionSeriesBands.model_rebuild()
|
DecompositionSeriesBands.model_rebuild()
|
||||||
Units.model_rebuild()
|
Units.model_rebuild()
|
||||||
UnitsSpikeTimes.model_rebuild()
|
UnitsSpikeTimes.model_rebuild()
|
||||||
|
UnitsWaveformMean.model_rebuild()
|
||||||
|
UnitsWaveformSd.model_rebuild()
|
||||||
|
|
|
@ -158,10 +158,8 @@ class OptogeneticSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: NDArray[Shape["* num_times"], float] = Field(
|
data: OptogeneticSeriesData = Field(
|
||||||
...,
|
..., description="""Applied power for optogenetic stimulus, in watts."""
|
||||||
description="""Applied power for optogenetic stimulus, in watts.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
|
||||||
)
|
)
|
||||||
site: Union[OptogeneticStimulusSite, str] = Field(
|
site: Union[OptogeneticStimulusSite, str] = Field(
|
||||||
...,
|
...,
|
||||||
|
@ -209,6 +207,37 @@ class OptogeneticSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class OptogeneticSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Applied power for optogenetic stimulus, in watts.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.ogen"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["watts"] = Field(
|
||||||
|
"watts",
|
||||||
|
description="""Unit of measurement for data, which is fixed to 'watts'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "watts", "ifabsent": "string(watts)"}},
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class OptogeneticStimulusSite(NWBContainer):
|
class OptogeneticStimulusSite(NWBContainer):
|
||||||
"""
|
"""
|
||||||
A site of optogenetic stimulation.
|
A site of optogenetic stimulation.
|
||||||
|
@ -239,4 +268,5 @@ class OptogeneticStimulusSite(NWBContainer):
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
OptogeneticSeries.model_rebuild()
|
OptogeneticSeries.model_rebuild()
|
||||||
|
OptogeneticSeriesData.model_rebuild()
|
||||||
OptogeneticStimulusSite.model_rebuild()
|
OptogeneticStimulusSite.model_rebuild()
|
||||||
|
|
|
@ -28,7 +28,7 @@ from ...core.v2_2_2.core_nwb_base import (
|
||||||
TimeSeriesSync,
|
TimeSeriesSync,
|
||||||
)
|
)
|
||||||
from ...core.v2_2_2.core_nwb_device import Device
|
from ...core.v2_2_2.core_nwb_device import Device
|
||||||
from ...core.v2_2_2.core_nwb_image import ImageSeries, ImageSeriesExternalFile
|
from ...core.v2_2_2.core_nwb_image import ImageSeries, ImageSeriesData, ImageSeriesExternalFile
|
||||||
from ...hdmf_common.v1_1_3.hdmf_common_table import DynamicTable, DynamicTableRegion
|
from ...hdmf_common.v1_1_3.hdmf_common_table import DynamicTable, DynamicTableRegion
|
||||||
|
|
||||||
|
|
||||||
|
@ -209,12 +209,9 @@ class TwoPhotonSeries(ImageSeries):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
data: Optional[
|
data: Optional[ImageSeriesData] = Field(
|
||||||
Union[
|
None, description="""Binary data representing images across frames."""
|
||||||
NDArray[Shape["* frame, * x, * y"], float],
|
)
|
||||||
NDArray[Shape["* frame, * x, * y, * z"], float],
|
|
||||||
]
|
|
||||||
] = Field(None, description="""Binary data representing images across frames.""")
|
|
||||||
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Number of pixels on x, y, (and z) axes.""",
|
description="""Number of pixels on x, y, (and z) axes.""",
|
||||||
|
@ -225,8 +222,9 @@ class TwoPhotonSeries(ImageSeries):
|
||||||
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
||||||
)
|
)
|
||||||
format: Optional[str] = Field(
|
format: Optional[str] = Field(
|
||||||
None,
|
"raw",
|
||||||
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="""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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(raw)"}},
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -275,9 +273,7 @@ class RoiResponseSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: Union[
|
data: RoiResponseSeriesData = Field(..., description="""Signals from ROIs.""")
|
||||||
NDArray[Shape["* num_times"], float], NDArray[Shape["* num_times, * num_rois"], float]
|
|
||||||
] = Field(..., description="""Signals from ROIs.""")
|
|
||||||
rois: Named[DynamicTableRegion] = Field(
|
rois: Named[DynamicTableRegion] = Field(
|
||||||
...,
|
...,
|
||||||
description="""DynamicTableRegion referencing into an ROITable containing information on the ROIs stored in this timeseries.""",
|
description="""DynamicTableRegion referencing into an ROITable containing information on the ROIs stored in this timeseries.""",
|
||||||
|
@ -327,6 +323,39 @@ class RoiResponseSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class RoiResponseSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Signals from ROIs.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.ophys"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: str = Field(
|
||||||
|
...,
|
||||||
|
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'.""",
|
||||||
|
)
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* num_times"], float | int],
|
||||||
|
NDArray[Shape["* num_times, * num_rois"], float | int],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class DfOverF(NWBDataInterface):
|
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).
|
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).
|
||||||
|
@ -336,10 +365,10 @@ class DfOverF(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[RoiResponseSeries]] = Field(
|
name: str = Field("DfOverF", json_schema_extra={"linkml_meta": {"ifabsent": "string(DfOverF)"}})
|
||||||
|
value: Optional[Dict[str, RoiResponseSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "RoiResponseSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "RoiResponseSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class Fluorescence(NWBDataInterface):
|
class Fluorescence(NWBDataInterface):
|
||||||
|
@ -351,10 +380,12 @@ class Fluorescence(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[RoiResponseSeries]] = Field(
|
name: str = Field(
|
||||||
|
"Fluorescence", json_schema_extra={"linkml_meta": {"ifabsent": "string(Fluorescence)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, RoiResponseSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "RoiResponseSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "RoiResponseSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class ImageSegmentation(NWBDataInterface):
|
class ImageSegmentation(NWBDataInterface):
|
||||||
|
@ -366,10 +397,13 @@ class ImageSegmentation(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[DynamicTable]] = Field(
|
name: str = Field(
|
||||||
|
"ImageSegmentation",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(ImageSegmentation)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, DynamicTable]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "DynamicTable"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "DynamicTable"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class ImagingPlane(NWBContainer):
|
class ImagingPlane(NWBContainer):
|
||||||
|
@ -538,16 +572,20 @@ class MotionCorrection(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[NWBDataInterface]] = Field(
|
name: str = Field(
|
||||||
|
"MotionCorrection",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(MotionCorrection)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, NWBDataInterface]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
TwoPhotonSeries.model_rebuild()
|
TwoPhotonSeries.model_rebuild()
|
||||||
RoiResponseSeries.model_rebuild()
|
RoiResponseSeries.model_rebuild()
|
||||||
|
RoiResponseSeriesData.model_rebuild()
|
||||||
DfOverF.model_rebuild()
|
DfOverF.model_rebuild()
|
||||||
Fluorescence.model_rebuild()
|
Fluorescence.model_rebuild()
|
||||||
ImageSegmentation.model_rebuild()
|
ImageSegmentation.model_rebuild()
|
||||||
|
|
|
@ -38,6 +38,7 @@ from ...core.v2_2_2.core_nwb_ecephys import (
|
||||||
ClusterWaveforms,
|
ClusterWaveforms,
|
||||||
Clustering,
|
Clustering,
|
||||||
ElectricalSeries,
|
ElectricalSeries,
|
||||||
|
ElectricalSeriesData,
|
||||||
ElectrodeGroup,
|
ElectrodeGroup,
|
||||||
ElectrodeGroupPosition,
|
ElectrodeGroupPosition,
|
||||||
EventDetection,
|
EventDetection,
|
||||||
|
@ -46,6 +47,7 @@ from ...core.v2_2_2.core_nwb_ecephys import (
|
||||||
FilteredEphys,
|
FilteredEphys,
|
||||||
LFP,
|
LFP,
|
||||||
SpikeEventSeries,
|
SpikeEventSeries,
|
||||||
|
SpikeEventSeriesData,
|
||||||
)
|
)
|
||||||
from ...core.v2_2_2.core_nwb_epoch import TimeIntervals, TimeIntervalsTimeseries
|
from ...core.v2_2_2.core_nwb_epoch import TimeIntervals, TimeIntervalsTimeseries
|
||||||
from ...core.v2_2_2.core_nwb_file import (
|
from ...core.v2_2_2.core_nwb_file import (
|
||||||
|
@ -85,9 +87,12 @@ from ...core.v2_2_2.core_nwb_image import (
|
||||||
GrayscaleImage,
|
GrayscaleImage,
|
||||||
ImageMaskSeries,
|
ImageMaskSeries,
|
||||||
ImageSeries,
|
ImageSeries,
|
||||||
|
ImageSeriesData,
|
||||||
ImageSeriesExternalFile,
|
ImageSeriesExternalFile,
|
||||||
IndexSeries,
|
IndexSeries,
|
||||||
|
IndexSeriesData,
|
||||||
OpticalSeries,
|
OpticalSeries,
|
||||||
|
OpticalSeriesData,
|
||||||
RGBAImage,
|
RGBAImage,
|
||||||
RGBImage,
|
RGBImage,
|
||||||
)
|
)
|
||||||
|
@ -95,14 +100,22 @@ from ...core.v2_2_2.core_nwb_misc import (
|
||||||
AbstractFeatureSeries,
|
AbstractFeatureSeries,
|
||||||
AbstractFeatureSeriesData,
|
AbstractFeatureSeriesData,
|
||||||
AnnotationSeries,
|
AnnotationSeries,
|
||||||
|
AnnotationSeriesData,
|
||||||
DecompositionSeries,
|
DecompositionSeries,
|
||||||
DecompositionSeriesBands,
|
DecompositionSeriesBands,
|
||||||
DecompositionSeriesData,
|
DecompositionSeriesData,
|
||||||
IntervalSeries,
|
IntervalSeries,
|
||||||
|
IntervalSeriesData,
|
||||||
Units,
|
Units,
|
||||||
UnitsSpikeTimes,
|
UnitsSpikeTimes,
|
||||||
|
UnitsWaveformMean,
|
||||||
|
UnitsWaveformSd,
|
||||||
|
)
|
||||||
|
from ...core.v2_2_2.core_nwb_ogen import (
|
||||||
|
OptogeneticSeries,
|
||||||
|
OptogeneticSeriesData,
|
||||||
|
OptogeneticStimulusSite,
|
||||||
)
|
)
|
||||||
from ...core.v2_2_2.core_nwb_ogen import OptogeneticSeries, OptogeneticStimulusSite
|
|
||||||
from ...core.v2_2_2.core_nwb_ophys import (
|
from ...core.v2_2_2.core_nwb_ophys import (
|
||||||
DfOverF,
|
DfOverF,
|
||||||
Fluorescence,
|
Fluorescence,
|
||||||
|
@ -114,6 +127,7 @@ from ...core.v2_2_2.core_nwb_ophys import (
|
||||||
MotionCorrection,
|
MotionCorrection,
|
||||||
OpticalChannel,
|
OpticalChannel,
|
||||||
RoiResponseSeries,
|
RoiResponseSeries,
|
||||||
|
RoiResponseSeriesData,
|
||||||
TwoPhotonSeries,
|
TwoPhotonSeries,
|
||||||
)
|
)
|
||||||
from ...core.v2_2_2.core_nwb_retinotopy import (
|
from ...core.v2_2_2.core_nwb_retinotopy import (
|
||||||
|
|
|
@ -170,9 +170,9 @@ class Image(NWBData):
|
||||||
description: Optional[str] = Field(None, description="""Description of the image.""")
|
description: Optional[str] = Field(None, description="""Description of the image.""")
|
||||||
value: Optional[
|
value: Optional[
|
||||||
Union[
|
Union[
|
||||||
NDArray[Shape["* x, * y"], float],
|
NDArray[Shape["* x, * y"], float | int],
|
||||||
NDArray[Shape["* x, * y, 3 r_g_b"], float],
|
NDArray[Shape["* x, * y, 3 r_g_b"], float | int],
|
||||||
NDArray[Shape["* x, * y, 4 r_g_b_a"], float],
|
NDArray[Shape["* x, * y, 4 r_g_b_a"], float | int],
|
||||||
]
|
]
|
||||||
] = Field(None)
|
] = Field(None)
|
||||||
|
|
||||||
|
@ -333,13 +333,16 @@ class ProcessingModule(NWBContainer):
|
||||||
{"from_schema": "core.nwb.base", "tree_root": True}
|
{"from_schema": "core.nwb.base", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[Union[DynamicTable, NWBDataInterface]]] = Field(
|
name: str = Field(...)
|
||||||
|
description: str = Field(
|
||||||
|
..., description="""Description of this collection of processed data."""
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, Union[DynamicTable, NWBDataInterface]]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}, {"range": "DynamicTable"}]}
|
"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}, {"range": "DynamicTable"}]}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class Images(NWBDataInterface):
|
class Images(NWBDataInterface):
|
||||||
|
@ -353,7 +356,7 @@ class Images(NWBDataInterface):
|
||||||
|
|
||||||
name: str = Field("Images", json_schema_extra={"linkml_meta": {"ifabsent": "string(Images)"}})
|
name: str = Field("Images", json_schema_extra={"linkml_meta": {"ifabsent": "string(Images)"}})
|
||||||
description: str = Field(..., description="""Description of this collection of images.""")
|
description: str = Field(..., description="""Description of this collection of images.""")
|
||||||
image: List[Image] = Field(..., description="""Images stored in this collection.""")
|
image: List[str] = Field(..., description="""Images stored in this collection.""")
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
|
|
|
@ -213,6 +213,16 @@ class SpatialSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Optional[str] = Field(
|
unit: Optional[str] = Field(
|
||||||
"meters",
|
"meters",
|
||||||
description="""Base unit of measurement for working with the data. The default value is 'meters'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
description="""Base unit of measurement for working with the data. The default value is 'meters'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
|
@ -220,8 +230,8 @@ class SpatialSeriesData(ConfiguredBaseModel):
|
||||||
)
|
)
|
||||||
value: Optional[
|
value: Optional[
|
||||||
Union[
|
Union[
|
||||||
NDArray[Shape["* num_times"], float],
|
NDArray[Shape["* num_times"], float | int],
|
||||||
NDArray[Shape["* num_times, * num_features"], float],
|
NDArray[Shape["* num_times, * num_features"], float | int],
|
||||||
]
|
]
|
||||||
] = Field(None)
|
] = Field(None)
|
||||||
|
|
||||||
|
@ -235,10 +245,13 @@ class BehavioralEpochs(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[IntervalSeries]] = Field(
|
name: str = Field(
|
||||||
|
"BehavioralEpochs",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(BehavioralEpochs)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, IntervalSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "IntervalSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "IntervalSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class BehavioralEvents(NWBDataInterface):
|
class BehavioralEvents(NWBDataInterface):
|
||||||
|
@ -250,10 +263,13 @@ class BehavioralEvents(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[TimeSeries]] = Field(
|
name: str = Field(
|
||||||
|
"BehavioralEvents",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(BehavioralEvents)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class BehavioralTimeSeries(NWBDataInterface):
|
class BehavioralTimeSeries(NWBDataInterface):
|
||||||
|
@ -265,10 +281,13 @@ class BehavioralTimeSeries(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[TimeSeries]] = Field(
|
name: str = Field(
|
||||||
|
"BehavioralTimeSeries",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(BehavioralTimeSeries)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class PupilTracking(NWBDataInterface):
|
class PupilTracking(NWBDataInterface):
|
||||||
|
@ -280,10 +299,12 @@ class PupilTracking(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[TimeSeries]] = Field(
|
name: str = Field(
|
||||||
|
"PupilTracking", json_schema_extra={"linkml_meta": {"ifabsent": "string(PupilTracking)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class EyeTracking(NWBDataInterface):
|
class EyeTracking(NWBDataInterface):
|
||||||
|
@ -295,10 +316,12 @@ class EyeTracking(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[SpatialSeries]] = Field(
|
name: str = Field(
|
||||||
|
"EyeTracking", json_schema_extra={"linkml_meta": {"ifabsent": "string(EyeTracking)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, SpatialSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class CompassDirection(NWBDataInterface):
|
class CompassDirection(NWBDataInterface):
|
||||||
|
@ -310,10 +333,13 @@ class CompassDirection(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[SpatialSeries]] = Field(
|
name: str = Field(
|
||||||
|
"CompassDirection",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(CompassDirection)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, SpatialSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class Position(NWBDataInterface):
|
class Position(NWBDataInterface):
|
||||||
|
@ -325,10 +351,12 @@ class Position(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[SpatialSeries]] = Field(
|
name: str = Field(
|
||||||
|
"Position", json_schema_extra={"linkml_meta": {"ifabsent": "string(Position)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, SpatialSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
|
|
|
@ -190,11 +190,12 @@ class ElectricalSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: Union[
|
channel_conversion: Optional[NDArray[Shape["* num_channels"], float]] = Field(
|
||||||
NDArray[Shape["* num_times"], float],
|
None,
|
||||||
NDArray[Shape["* num_times, * num_channels"], float],
|
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.""",
|
||||||
NDArray[Shape["* num_times, * num_channels, * num_samples"], float],
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_channels"}]}}},
|
||||||
] = Field(..., description="""Recorded voltage data.""")
|
)
|
||||||
|
data: ElectricalSeriesData = Field(..., description="""Recorded voltage data.""")
|
||||||
electrodes: Named[DynamicTableRegion] = Field(
|
electrodes: Named[DynamicTableRegion] = Field(
|
||||||
...,
|
...,
|
||||||
description="""DynamicTableRegion pointer to the electrodes that this time series was generated from.""",
|
description="""DynamicTableRegion pointer to the electrodes that this time series was generated from.""",
|
||||||
|
@ -207,11 +208,6 @@ class ElectricalSeries(TimeSeries):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
channel_conversion: Optional[NDArray[Shape["* num_channels"], float]] = Field(
|
|
||||||
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.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_channels"}]}}},
|
|
||||||
)
|
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
description="""Description of the time series.""",
|
description="""Description of the time series.""",
|
||||||
|
@ -249,6 +245,41 @@ class ElectricalSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ElectricalSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Recorded voltage data.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.ecephys"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["volts"] = Field(
|
||||||
|
"volts",
|
||||||
|
description="""Base unit of measurement for working with the data. This value is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion' and 'channel_conversion' (if present).""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
|
)
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* num_times"], float | int],
|
||||||
|
NDArray[Shape["* num_times, * num_channels"], float | int],
|
||||||
|
NDArray[Shape["* num_times, * num_channels, * num_samples"], float | int],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class SpikeEventSeries(ElectricalSeries):
|
class SpikeEventSeries(ElectricalSeries):
|
||||||
"""
|
"""
|
||||||
Stores snapshots/snippets of recorded spike events (i.e., threshold crossings). This may also be raw data, as reported by ephys hardware. If so, the TimeSeries::description field should describe how events were detected. All SpikeEventSeries should reside in a module (under EventWaveform interface) even if the spikes were reported and stored by hardware. All events span the same recording channels and store snapshots of equal duration. TimeSeries::data array structure: [num events] [num channels] [num samples] (or [num events] [num samples] for single electrode).
|
Stores snapshots/snippets of recorded spike events (i.e., threshold crossings). This may also be raw data, as reported by ephys hardware. If so, the TimeSeries::description field should describe how events were detected. All SpikeEventSeries should reside in a module (under EventWaveform interface) even if the spikes were reported and stored by hardware. All events span the same recording channels and store snapshots of equal duration. TimeSeries::data array structure: [num events] [num channels] [num samples] (or [num events] [num samples] for single electrode).
|
||||||
|
@ -259,15 +290,17 @@ class SpikeEventSeries(ElectricalSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: Union[
|
data: SpikeEventSeriesData = Field(..., description="""Spike waveforms.""")
|
||||||
NDArray[Shape["* num_events, * num_samples"], float],
|
|
||||||
NDArray[Shape["* num_events, * num_channels, * num_samples"], float],
|
|
||||||
] = Field(..., description="""Spike waveforms.""")
|
|
||||||
timestamps: NDArray[Shape["* num_times"], float] = Field(
|
timestamps: NDArray[Shape["* num_times"], float] = Field(
|
||||||
...,
|
...,
|
||||||
description="""Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. Timestamps are required for the events. Unlike for TimeSeries, timestamps are required for SpikeEventSeries and are thus re-specified here.""",
|
description="""Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. Timestamps are required for the events. Unlike for TimeSeries, timestamps are required for SpikeEventSeries and are thus re-specified here.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
||||||
)
|
)
|
||||||
|
channel_conversion: Optional[NDArray[Shape["* num_channels"], float]] = Field(
|
||||||
|
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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_channels"}]}}},
|
||||||
|
)
|
||||||
electrodes: Named[DynamicTableRegion] = Field(
|
electrodes: Named[DynamicTableRegion] = Field(
|
||||||
...,
|
...,
|
||||||
description="""DynamicTableRegion pointer to the electrodes that this time series was generated from.""",
|
description="""DynamicTableRegion pointer to the electrodes that this time series was generated from.""",
|
||||||
|
@ -280,11 +313,6 @@ class SpikeEventSeries(ElectricalSeries):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
channel_conversion: Optional[NDArray[Shape["* num_channels"], float]] = Field(
|
|
||||||
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.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_channels"}]}}},
|
|
||||||
)
|
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
description="""Description of the time series.""",
|
description="""Description of the time series.""",
|
||||||
|
@ -317,6 +345,40 @@ class SpikeEventSeries(ElectricalSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class SpikeEventSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Spike waveforms.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.ecephys"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["volts"] = Field(
|
||||||
|
"volts",
|
||||||
|
description="""Unit of measurement for waveforms, which is fixed to 'volts'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
|
)
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* num_events, * num_samples"], float | int],
|
||||||
|
NDArray[Shape["* num_events, * num_channels, * num_samples"], float | int],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class FeatureExtraction(NWBDataInterface):
|
class FeatureExtraction(NWBDataInterface):
|
||||||
"""
|
"""
|
||||||
Features, such as PC1 and PC2, that are extracted from signals stored in a SpikeEventSeries or other source.
|
Features, such as PC1 and PC2, that are extracted from signals stored in a SpikeEventSeries or other source.
|
||||||
|
@ -415,10 +477,12 @@ class EventWaveform(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[SpikeEventSeries]] = Field(
|
name: str = Field(
|
||||||
|
"EventWaveform", json_schema_extra={"linkml_meta": {"ifabsent": "string(EventWaveform)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, SpikeEventSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpikeEventSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpikeEventSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class FilteredEphys(NWBDataInterface):
|
class FilteredEphys(NWBDataInterface):
|
||||||
|
@ -430,10 +494,12 @@ class FilteredEphys(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[ElectricalSeries]] = Field(
|
name: str = Field(
|
||||||
|
"FilteredEphys", json_schema_extra={"linkml_meta": {"ifabsent": "string(FilteredEphys)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, ElectricalSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "ElectricalSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "ElectricalSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class LFP(NWBDataInterface):
|
class LFP(NWBDataInterface):
|
||||||
|
@ -445,10 +511,10 @@ class LFP(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[ElectricalSeries]] = Field(
|
name: str = Field("LFP", json_schema_extra={"linkml_meta": {"ifabsent": "string(LFP)"}})
|
||||||
|
value: Optional[Dict[str, ElectricalSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "ElectricalSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "ElectricalSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class ElectrodeGroup(NWBContainer):
|
class ElectrodeGroup(NWBContainer):
|
||||||
|
@ -591,7 +657,9 @@ class Clustering(NWBDataInterface):
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
ElectricalSeries.model_rebuild()
|
ElectricalSeries.model_rebuild()
|
||||||
|
ElectricalSeriesData.model_rebuild()
|
||||||
SpikeEventSeries.model_rebuild()
|
SpikeEventSeries.model_rebuild()
|
||||||
|
SpikeEventSeriesData.model_rebuild()
|
||||||
FeatureExtraction.model_rebuild()
|
FeatureExtraction.model_rebuild()
|
||||||
EventDetection.model_rebuild()
|
EventDetection.model_rebuild()
|
||||||
EventWaveform.model_rebuild()
|
EventWaveform.model_rebuild()
|
||||||
|
|
|
@ -247,9 +247,6 @@ class TimeIntervals(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class TimeIntervalsTimeseries(VectorData):
|
class TimeIntervalsTimeseries(VectorData):
|
||||||
|
|
|
@ -225,28 +225,28 @@ class NWBFile(NWBContainer):
|
||||||
...,
|
...,
|
||||||
description="""Date and time corresponding to time zero of all timestamps. The date is stored in UTC with local timezone offset as ISO 8601 extended formatted string: 2018-09-28T14:43:54.123+02:00. Dates stored in UTC end in \"Z\" with no timezone offset. Date accuracy is up to milliseconds. All times stored in the file use this time as reference (i.e., time zero).""",
|
description="""Date and time corresponding to time zero of all timestamps. The date is stored in UTC with local timezone offset as ISO 8601 extended formatted string: 2018-09-28T14:43:54.123+02:00. Dates stored in UTC end in \"Z\" with no timezone offset. Date accuracy is up to milliseconds. All times stored in the file use this time as reference (i.e., time zero).""",
|
||||||
)
|
)
|
||||||
acquisition: Optional[List[Union[DynamicTable, NWBDataInterface]]] = Field(
|
acquisition: Optional[Dict[str, Union[DynamicTable, NWBDataInterface]]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Data streams recorded from the system, including ephys, ophys, tracking, etc. This group should be read-only after the experiment is completed and timestamps are corrected to a common timebase. The data stored here may be links to raw data stored in external NWB files. This will allow keeping bulky raw data out of the file while preserving the option of keeping some/all in the file. Acquired data includes tracking and experimental data streams (i.e., everything measured from the system). If bulky data is stored in the /acquisition group, the data can exist in a separate NWB file that is linked to by the file being used for processing and analysis.""",
|
description="""Data streams recorded from the system, including ephys, ophys, tracking, etc. This group should be read-only after the experiment is completed and timestamps are corrected to a common timebase. The data stored here may be links to raw data stored in external NWB files. This will allow keeping bulky raw data out of the file while preserving the option of keeping some/all in the file. Acquired data includes tracking and experimental data streams (i.e., everything measured from the system). If bulky data is stored in the /acquisition group, the data can exist in a separate NWB file that is linked to by the file being used for processing and analysis.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}, {"range": "DynamicTable"}]}
|
"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}, {"range": "DynamicTable"}]}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
analysis: Optional[List[Union[DynamicTable, NWBContainer]]] = Field(
|
analysis: Optional[Dict[str, Union[DynamicTable, NWBContainer]]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Lab-specific and custom scientific analysis of data. There is no defined format for the content of this group - the format is up to the individual user/lab. To facilitate sharing analysis data between labs, the contents here should be stored in standard types (e.g., neurodata_types) and appropriately documented. The file can store lab-specific and custom data analysis without restriction on its form or schema, reducing data formatting restrictions on end users. Such data should be placed in the analysis group. The analysis data should be documented so that it could be shared with other labs.""",
|
description="""Lab-specific and custom scientific analysis of data. There is no defined format for the content of this group - the format is up to the individual user/lab. To facilitate sharing analysis data between labs, the contents here should be stored in standard types (e.g., neurodata_types) and appropriately documented. The file can store lab-specific and custom data analysis without restriction on its form or schema, reducing data formatting restrictions on end users. Such data should be placed in the analysis group. The analysis data should be documented so that it could be shared with other labs.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"any_of": [{"range": "NWBContainer"}, {"range": "DynamicTable"}]}
|
"linkml_meta": {"any_of": [{"range": "NWBContainer"}, {"range": "DynamicTable"}]}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
scratch: Optional[List[Union[DynamicTable, NWBContainer]]] = Field(
|
scratch: Optional[Dict[str, Union[DynamicTable, NWBContainer]]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""A place to store one-off analysis results. Data placed here is not intended for sharing. By placing data here, users acknowledge that there is no guarantee that their data meets any standard.""",
|
description="""A place to store one-off analysis results. Data placed here is not intended for sharing. By placing data here, users acknowledge that there is no guarantee that their data meets any standard.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"any_of": [{"range": "NWBContainer"}, {"range": "DynamicTable"}]}
|
"linkml_meta": {"any_of": [{"range": "NWBContainer"}, {"range": "DynamicTable"}]}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
processing: Optional[List[ProcessingModule]] = Field(
|
processing: Optional[Dict[str, ProcessingModule]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""The home for ProcessingModules. These modules perform intermediate analysis of data that is necessary to perform before scientific analysis. Examples include spike clustering, extracting position from tracking data, stitching together image slices. ProcessingModules can be large and express many data sets from relatively complex analysis (e.g., spike detection and clustering) or small, representing extraction of position information from tracking video, or even binary lick/no-lick decisions. Common software tools (e.g., klustakwik, MClust) are expected to read/write data here. 'Processing' refers to intermediate analysis of the acquired data to make it more amenable to scientific analysis.""",
|
description="""The home for ProcessingModules. These modules perform intermediate analysis of data that is necessary to perform before scientific analysis. Examples include spike clustering, extracting position from tracking data, stitching together image slices. ProcessingModules can be large and express many data sets from relatively complex analysis (e.g., spike detection and clustering) or small, representing extraction of position information from tracking video, or even binary lick/no-lick decisions. Common software tools (e.g., klustakwik, MClust) are expected to read/write data here. 'Processing' refers to intermediate analysis of the acquired data to make it more amenable to scientific analysis.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ProcessingModule"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ProcessingModule"}]}},
|
||||||
|
@ -264,6 +264,9 @@ class NWBFile(NWBContainer):
|
||||||
description="""Experimental intervals, whether that be logically distinct sub-experiments having a particular scientific goal, trials (see trials subgroup) during an experiment, or epochs (see epochs subgroup) deriving from analysis of data.""",
|
description="""Experimental intervals, whether that be logically distinct sub-experiments having a particular scientific goal, trials (see trials subgroup) during an experiment, or epochs (see epochs subgroup) deriving from analysis of data.""",
|
||||||
)
|
)
|
||||||
units: Optional[Units] = Field(None, description="""Data about sorted spike units.""")
|
units: Optional[Units] = Field(None, description="""Data about sorted spike units.""")
|
||||||
|
specifications: Optional[dict] = Field(
|
||||||
|
None, description="""Nested dictionary of schema specifications"""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class NWBFileStimulus(ConfiguredBaseModel):
|
class NWBFileStimulus(ConfiguredBaseModel):
|
||||||
|
@ -279,12 +282,12 @@ class NWBFileStimulus(ConfiguredBaseModel):
|
||||||
"linkml_meta": {"equals_string": "stimulus", "ifabsent": "string(stimulus)"}
|
"linkml_meta": {"equals_string": "stimulus", "ifabsent": "string(stimulus)"}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
presentation: Optional[List[TimeSeries]] = Field(
|
presentation: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Stimuli presented during the experiment.""",
|
description="""Stimuli presented during the experiment.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}},
|
||||||
)
|
)
|
||||||
templates: Optional[List[TimeSeries]] = Field(
|
templates: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None,
|
None,
|
||||||
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.""",
|
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.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}},
|
||||||
|
@ -362,11 +365,7 @@ class NWBFileGeneral(ConfiguredBaseModel):
|
||||||
None,
|
None,
|
||||||
description="""Information about virus(es) used in experiments, including virus ID, source, date made, injection location, volume, etc.""",
|
description="""Information about virus(es) used in experiments, including virus ID, source, date made, injection location, volume, etc.""",
|
||||||
)
|
)
|
||||||
lab_meta_data: Optional[List[LabMetaData]] = Field(
|
devices: Optional[Dict[str, Device]] = Field(
|
||||||
None,
|
|
||||||
description="""Place-holder than can be extended so that lab-specific meta-data can be placed in /general.""",
|
|
||||||
)
|
|
||||||
devices: Optional[List[Device]] = Field(
|
|
||||||
None,
|
None,
|
||||||
description="""Description of hardware devices used during experiment, e.g., monitors, ADC boards, microscopes, etc.""",
|
description="""Description of hardware devices used during experiment, e.g., monitors, ADC boards, microscopes, etc.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "Device"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "Device"}]}},
|
||||||
|
@ -381,16 +380,20 @@ class NWBFileGeneral(ConfiguredBaseModel):
|
||||||
intracellular_ephys: Optional[GeneralIntracellularEphys] = Field(
|
intracellular_ephys: Optional[GeneralIntracellularEphys] = Field(
|
||||||
None, description="""Metadata related to intracellular electrophysiology."""
|
None, description="""Metadata related to intracellular electrophysiology."""
|
||||||
)
|
)
|
||||||
optogenetics: Optional[List[OptogeneticStimulusSite]] = Field(
|
optogenetics: Optional[Dict[str, OptogeneticStimulusSite]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Metadata describing optogenetic stimuluation.""",
|
description="""Metadata describing optogenetic stimuluation.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "OptogeneticStimulusSite"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "OptogeneticStimulusSite"}]}},
|
||||||
)
|
)
|
||||||
optophysiology: Optional[List[ImagingPlane]] = Field(
|
optophysiology: Optional[Dict[str, ImagingPlane]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Metadata related to optophysiology.""",
|
description="""Metadata related to optophysiology.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ImagingPlane"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ImagingPlane"}]}},
|
||||||
)
|
)
|
||||||
|
value: Optional[Dict[str, LabMetaData]] = Field(
|
||||||
|
None,
|
||||||
|
description="""Place-holder than can be extended so that lab-specific meta-data can be placed in /general.""",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class GeneralSourceScript(ConfiguredBaseModel):
|
class GeneralSourceScript(ConfiguredBaseModel):
|
||||||
|
@ -426,12 +429,12 @@ class GeneralExtracellularEphys(ConfiguredBaseModel):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
electrode_group: Optional[List[ElectrodeGroup]] = Field(
|
|
||||||
None, description="""Physical group of electrodes."""
|
|
||||||
)
|
|
||||||
electrodes: Optional[ExtracellularEphysElectrodes] = Field(
|
electrodes: Optional[ExtracellularEphysElectrodes] = Field(
|
||||||
None, description="""A table of all electrodes (i.e. channels) used for recording."""
|
None, description="""A table of all electrodes (i.e. channels) used for recording."""
|
||||||
)
|
)
|
||||||
|
value: Optional[Dict[str, ElectrodeGroup]] = Field(
|
||||||
|
None, description="""Physical group of electrodes."""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ExtracellularEphysElectrodes(DynamicTable):
|
class ExtracellularEphysElectrodes(DynamicTable):
|
||||||
|
@ -501,8 +504,14 @@ class ExtracellularEphysElectrodes(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
group: List[ElectrodeGroup] = Field(
|
group: VectorData[NDArray[Any, ElectrodeGroup]] = Field(
|
||||||
..., description="""Reference to the ElectrodeGroup this electrode is a part of."""
|
...,
|
||||||
|
description="""Reference to the ElectrodeGroup this electrode is a part of.""",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {
|
||||||
|
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
||||||
|
}
|
||||||
|
},
|
||||||
)
|
)
|
||||||
group_name: VectorData[NDArray[Any, str]] = Field(
|
group_name: VectorData[NDArray[Any, str]] = Field(
|
||||||
...,
|
...,
|
||||||
|
@ -559,9 +568,6 @@ class ExtracellularEphysElectrodes(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class GeneralIntracellularEphys(ConfiguredBaseModel):
|
class GeneralIntracellularEphys(ConfiguredBaseModel):
|
||||||
|
@ -584,12 +590,12 @@ class GeneralIntracellularEphys(ConfiguredBaseModel):
|
||||||
None,
|
None,
|
||||||
description="""Description of filtering used. Includes filtering type and parameters, frequency fall-off, etc. If this changes between TimeSeries, filter description should be stored as a text attribute for each TimeSeries.""",
|
description="""Description of filtering used. Includes filtering type and parameters, frequency fall-off, etc. If this changes between TimeSeries, filter description should be stored as a text attribute for each TimeSeries.""",
|
||||||
)
|
)
|
||||||
intracellular_electrode: Optional[List[IntracellularElectrode]] = Field(
|
|
||||||
None, description="""An intracellular electrode."""
|
|
||||||
)
|
|
||||||
sweep_table: Optional[SweepTable] = Field(
|
sweep_table: Optional[SweepTable] = Field(
|
||||||
None, description="""The table which groups different PatchClampSeries together."""
|
None, description="""The table which groups different PatchClampSeries together."""
|
||||||
)
|
)
|
||||||
|
value: Optional[Dict[str, IntracellularElectrode]] = Field(
|
||||||
|
None, description="""An intracellular electrode."""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class NWBFileIntervals(ConfiguredBaseModel):
|
class NWBFileIntervals(ConfiguredBaseModel):
|
||||||
|
@ -615,7 +621,7 @@ class NWBFileIntervals(ConfiguredBaseModel):
|
||||||
invalid_times: Optional[TimeIntervals] = Field(
|
invalid_times: Optional[TimeIntervals] = Field(
|
||||||
None, description="""Time intervals that should be removed from analysis."""
|
None, description="""Time intervals that should be removed from analysis."""
|
||||||
)
|
)
|
||||||
time_intervals: Optional[List[TimeIntervals]] = Field(
|
value: Optional[Dict[str, TimeIntervals]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Optional additional table(s) for describing other experimental time intervals.""",
|
description="""Optional additional table(s) for describing other experimental time intervals.""",
|
||||||
)
|
)
|
||||||
|
|
|
@ -262,11 +262,21 @@ class PatchClampSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: str = Field(
|
unit: str = Field(
|
||||||
...,
|
...,
|
||||||
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'.""",
|
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'.""",
|
||||||
)
|
)
|
||||||
value: Optional[NDArray[Shape["* num_times"], float]] = Field(
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -281,12 +291,12 @@ class CurrentClampSeries(PatchClampSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: CurrentClampSeriesData = Field(..., description="""Recorded voltage.""")
|
|
||||||
bias_current: Optional[float] = Field(None, description="""Bias current, in amps.""")
|
bias_current: Optional[float] = Field(None, description="""Bias current, in amps.""")
|
||||||
bridge_balance: Optional[float] = Field(None, description="""Bridge balance, in ohms.""")
|
bridge_balance: Optional[float] = Field(None, description="""Bridge balance, in ohms.""")
|
||||||
capacitance_compensation: Optional[float] = Field(
|
capacitance_compensation: Optional[float] = Field(
|
||||||
None, description="""Capacitance compensation, in farads."""
|
None, description="""Capacitance compensation, in farads."""
|
||||||
)
|
)
|
||||||
|
data: CurrentClampSeriesData = Field(..., description="""Recorded voltage.""")
|
||||||
stimulus_description: str = Field(
|
stimulus_description: str = Field(
|
||||||
..., description="""Protocol/stimulus name for this patch-clamp dataset."""
|
..., description="""Protocol/stimulus name for this patch-clamp dataset."""
|
||||||
)
|
)
|
||||||
|
@ -354,12 +364,24 @@ class CurrentClampSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Literal["volts"] = Field(
|
unit: Literal["volts"] = Field(
|
||||||
"volts",
|
"volts",
|
||||||
description="""Base unit of measurement for working with the data. which is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
description="""Base unit of measurement for working with the data. which is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
)
|
)
|
||||||
value: Any = Field(...)
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class IZeroClampSeries(CurrentClampSeries):
|
class IZeroClampSeries(CurrentClampSeries):
|
||||||
|
@ -512,6 +534,16 @@ class CurrentClampStimulusSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Literal["amperes"] = Field(
|
unit: Literal["amperes"] = Field(
|
||||||
"amperes",
|
"amperes",
|
||||||
description="""Base unit of measurement for working with the data. which is fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
description="""Base unit of measurement for working with the data. which is fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
|
@ -519,7 +551,9 @@ class CurrentClampStimulusSeriesData(ConfiguredBaseModel):
|
||||||
"linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"}
|
"linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
value: Any = Field(...)
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class VoltageClampSeries(PatchClampSeries):
|
class VoltageClampSeries(PatchClampSeries):
|
||||||
|
@ -532,13 +566,13 @@ class VoltageClampSeries(PatchClampSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: VoltageClampSeriesData = Field(..., description="""Recorded current.""")
|
|
||||||
capacitance_fast: Optional[VoltageClampSeriesCapacitanceFast] = Field(
|
capacitance_fast: Optional[VoltageClampSeriesCapacitanceFast] = Field(
|
||||||
None, description="""Fast capacitance, in farads."""
|
None, description="""Fast capacitance, in farads."""
|
||||||
)
|
)
|
||||||
capacitance_slow: Optional[VoltageClampSeriesCapacitanceSlow] = Field(
|
capacitance_slow: Optional[VoltageClampSeriesCapacitanceSlow] = Field(
|
||||||
None, description="""Slow capacitance, in farads."""
|
None, description="""Slow capacitance, in farads."""
|
||||||
)
|
)
|
||||||
|
data: VoltageClampSeriesData = Field(..., description="""Recorded current.""")
|
||||||
resistance_comp_bandwidth: Optional[VoltageClampSeriesResistanceCompBandwidth] = Field(
|
resistance_comp_bandwidth: Optional[VoltageClampSeriesResistanceCompBandwidth] = Field(
|
||||||
None, description="""Resistance compensation bandwidth, in hertz."""
|
None, description="""Resistance compensation bandwidth, in hertz."""
|
||||||
)
|
)
|
||||||
|
@ -610,27 +644,6 @@ class VoltageClampSeries(PatchClampSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class VoltageClampSeriesData(ConfiguredBaseModel):
|
|
||||||
"""
|
|
||||||
Recorded current.
|
|
||||||
"""
|
|
||||||
|
|
||||||
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.icephys"})
|
|
||||||
|
|
||||||
name: Literal["data"] = Field(
|
|
||||||
"data",
|
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
|
||||||
)
|
|
||||||
unit: Literal["amperes"] = Field(
|
|
||||||
"amperes",
|
|
||||||
description="""Base unit of measurement for working with the data. which is fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
|
||||||
json_schema_extra={
|
|
||||||
"linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"}
|
|
||||||
},
|
|
||||||
)
|
|
||||||
value: Any = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class VoltageClampSeriesCapacitanceFast(ConfiguredBaseModel):
|
class VoltageClampSeriesCapacitanceFast(ConfiguredBaseModel):
|
||||||
"""
|
"""
|
||||||
Fast capacitance, in farads.
|
Fast capacitance, in farads.
|
||||||
|
@ -683,6 +696,39 @@ class VoltageClampSeriesCapacitanceSlow(ConfiguredBaseModel):
|
||||||
value: float = Field(...)
|
value: float = Field(...)
|
||||||
|
|
||||||
|
|
||||||
|
class VoltageClampSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Recorded current.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.icephys"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["amperes"] = Field(
|
||||||
|
"amperes",
|
||||||
|
description="""Base unit of measurement for working with the data. which is fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class VoltageClampSeriesResistanceCompBandwidth(ConfiguredBaseModel):
|
class VoltageClampSeriesResistanceCompBandwidth(ConfiguredBaseModel):
|
||||||
"""
|
"""
|
||||||
Resistance compensation bandwidth, in hertz.
|
Resistance compensation bandwidth, in hertz.
|
||||||
|
@ -887,12 +933,24 @@ class VoltageClampStimulusSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Literal["volts"] = Field(
|
unit: Literal["volts"] = Field(
|
||||||
"volts",
|
"volts",
|
||||||
description="""Base unit of measurement for working with the data. which is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
description="""Base unit of measurement for working with the data. which is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
)
|
)
|
||||||
value: Any = Field(...)
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class IntracellularElectrode(NWBContainer):
|
class IntracellularElectrode(NWBContainer):
|
||||||
|
@ -942,18 +1000,15 @@ class SweepTable(DynamicTable):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
sweep_number: VectorData[NDArray[Any, int]] = Field(
|
series: VectorData[NDArray[Any, PatchClampSeries]] = Field(
|
||||||
...,
|
...,
|
||||||
description="""Sweep number of the PatchClampSeries in that row.""",
|
description="""The PatchClampSeries with the sweep number in that row.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
series: List[PatchClampSeries] = Field(
|
|
||||||
..., description="""The PatchClampSeries with the sweep number in that row."""
|
|
||||||
)
|
|
||||||
series_index: Named[VectorIndex] = Field(
|
series_index: Named[VectorIndex] = Field(
|
||||||
...,
|
...,
|
||||||
description="""Index for series.""",
|
description="""Index for series.""",
|
||||||
|
@ -966,6 +1021,15 @@ class SweepTable(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
sweep_number: VectorData[NDArray[Any, int]] = Field(
|
||||||
|
...,
|
||||||
|
description="""Sweep number of the PatchClampSeries in that row.""",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {
|
||||||
|
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
)
|
||||||
colnames: List[str] = Field(
|
colnames: List[str] = Field(
|
||||||
...,
|
...,
|
||||||
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
|
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
|
||||||
|
@ -976,9 +1040,6 @@ class SweepTable(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
|
@ -991,9 +1052,9 @@ IZeroClampSeries.model_rebuild()
|
||||||
CurrentClampStimulusSeries.model_rebuild()
|
CurrentClampStimulusSeries.model_rebuild()
|
||||||
CurrentClampStimulusSeriesData.model_rebuild()
|
CurrentClampStimulusSeriesData.model_rebuild()
|
||||||
VoltageClampSeries.model_rebuild()
|
VoltageClampSeries.model_rebuild()
|
||||||
VoltageClampSeriesData.model_rebuild()
|
|
||||||
VoltageClampSeriesCapacitanceFast.model_rebuild()
|
VoltageClampSeriesCapacitanceFast.model_rebuild()
|
||||||
VoltageClampSeriesCapacitanceSlow.model_rebuild()
|
VoltageClampSeriesCapacitanceSlow.model_rebuild()
|
||||||
|
VoltageClampSeriesData.model_rebuild()
|
||||||
VoltageClampSeriesResistanceCompBandwidth.model_rebuild()
|
VoltageClampSeriesResistanceCompBandwidth.model_rebuild()
|
||||||
VoltageClampSeriesResistanceCompCorrection.model_rebuild()
|
VoltageClampSeriesResistanceCompCorrection.model_rebuild()
|
||||||
VoltageClampSeriesResistanceCompPrediction.model_rebuild()
|
VoltageClampSeriesResistanceCompPrediction.model_rebuild()
|
||||||
|
|
|
@ -152,7 +152,7 @@ class GrayscaleImage(Image):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
value: Optional[NDArray[Shape["* x, * y"], float]] = Field(
|
value: Optional[NDArray[Shape["* x, * y"], float | int]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"array": {"dimensions": [{"alias": "x"}, {"alias": "y"}]}}
|
"linkml_meta": {"array": {"dimensions": [{"alias": "x"}, {"alias": "y"}]}}
|
||||||
|
@ -174,7 +174,7 @@ class RGBImage(Image):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
value: Optional[NDArray[Shape["* x, * y, 3 r_g_b"], float]] = Field(
|
value: Optional[NDArray[Shape["* x, * y, 3 r_g_b"], float | int]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
|
@ -204,7 +204,7 @@ class RGBAImage(Image):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
value: Optional[NDArray[Shape["* x, * y, 4 r_g_b_a"], float]] = Field(
|
value: Optional[NDArray[Shape["* x, * y, 4 r_g_b_a"], float | int]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
|
@ -234,12 +234,9 @@ class ImageSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: Optional[
|
data: Optional[ImageSeriesData] = Field(
|
||||||
Union[
|
None, description="""Binary data representing images across frames."""
|
||||||
NDArray[Shape["* frame, * x, * y"], float],
|
)
|
||||||
NDArray[Shape["* frame, * x, * y, * z"], float],
|
|
||||||
]
|
|
||||||
] = Field(None, description="""Binary data representing images across frames.""")
|
|
||||||
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Number of pixels on x, y, (and z) axes.""",
|
description="""Number of pixels on x, y, (and z) axes.""",
|
||||||
|
@ -250,8 +247,9 @@ class ImageSeries(TimeSeries):
|
||||||
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
||||||
)
|
)
|
||||||
format: Optional[str] = Field(
|
format: Optional[str] = Field(
|
||||||
None,
|
"raw",
|
||||||
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="""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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(raw)"}},
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -290,6 +288,39 @@ class ImageSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ImageSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Binary data representing images across frames.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.image"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: str = Field(
|
||||||
|
...,
|
||||||
|
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'.""",
|
||||||
|
)
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* frame, * x, * y"], float | int],
|
||||||
|
NDArray[Shape["* frame, * x, * y, * z"], float | int],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class ImageSeriesExternalFile(ConfiguredBaseModel):
|
class ImageSeriesExternalFile(ConfiguredBaseModel):
|
||||||
"""
|
"""
|
||||||
Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.
|
Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.
|
||||||
|
@ -331,12 +362,9 @@ class ImageMaskSeries(ImageSeries):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
data: Optional[
|
data: Optional[ImageSeriesData] = Field(
|
||||||
Union[
|
None, description="""Binary data representing images across frames."""
|
||||||
NDArray[Shape["* frame, * x, * y"], float],
|
)
|
||||||
NDArray[Shape["* frame, * x, * y, * z"], float],
|
|
||||||
]
|
|
||||||
] = Field(None, description="""Binary data representing images across frames.""")
|
|
||||||
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Number of pixels on x, y, (and z) axes.""",
|
description="""Number of pixels on x, y, (and z) axes.""",
|
||||||
|
@ -347,8 +375,9 @@ class ImageMaskSeries(ImageSeries):
|
||||||
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
||||||
)
|
)
|
||||||
format: Optional[str] = Field(
|
format: Optional[str] = Field(
|
||||||
None,
|
"raw",
|
||||||
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="""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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(raw)"}},
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -397,6 +426,9 @@ class OpticalSeries(ImageSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
|
data: OpticalSeriesData = Field(
|
||||||
|
..., description="""Images presented to subject, either grayscale or RGB"""
|
||||||
|
)
|
||||||
distance: Optional[float] = Field(
|
distance: Optional[float] = Field(
|
||||||
None, description="""Distance from camera/monitor to target/eye."""
|
None, description="""Distance from camera/monitor to target/eye."""
|
||||||
)
|
)
|
||||||
|
@ -405,10 +437,6 @@ class OpticalSeries(ImageSeries):
|
||||||
NDArray[Shape["2 width_height"], float], NDArray[Shape["3 width_height_depth"], float]
|
NDArray[Shape["2 width_height"], float], NDArray[Shape["3 width_height_depth"], float]
|
||||||
]
|
]
|
||||||
] = Field(None, description="""Width, height and depth of image, or imaged area, in meters.""")
|
] = Field(None, description="""Width, height and depth of image, or imaged area, in meters.""")
|
||||||
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""")
|
|
||||||
orientation: Optional[str] = Field(
|
orientation: Optional[str] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Description of image relative to some reference frame (e.g., which way is up). Must also specify frame of reference.""",
|
description="""Description of image relative to some reference frame (e.g., which way is up). Must also specify frame of reference.""",
|
||||||
|
@ -423,8 +451,9 @@ class OpticalSeries(ImageSeries):
|
||||||
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
||||||
)
|
)
|
||||||
format: Optional[str] = Field(
|
format: Optional[str] = Field(
|
||||||
None,
|
"raw",
|
||||||
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="""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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(raw)"}},
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -463,6 +492,39 @@ class OpticalSeries(ImageSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class OpticalSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Images presented to subject, either grayscale or RGB
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.image"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: str = Field(
|
||||||
|
...,
|
||||||
|
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'.""",
|
||||||
|
)
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* frame, * x, * y"], float | int],
|
||||||
|
NDArray[Shape["* frame, * x, * y, 3 r_g_b"], float | int],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class IndexSeries(TimeSeries):
|
class IndexSeries(TimeSeries):
|
||||||
"""
|
"""
|
||||||
Stores indices to image frames stored in an ImageSeries. The purpose of the ImageIndexSeries is to allow a static image stack to be stored somewhere, and the images in the stack to be referenced out-of-order. This can be for the display of individual images, or of movie segments (as a movie is simply a series of images). The data field stores the index of the frame in the referenced ImageSeries, and the timestamps array indicates when that image was displayed.
|
Stores indices to image frames stored in an ImageSeries. The purpose of the ImageIndexSeries is to allow a static image stack to be stored somewhere, and the images in the stack to be referenced out-of-order. This can be for the display of individual images, or of movie segments (as a movie is simply a series of images). The data field stores the index of the frame in the referenced ImageSeries, and the timestamps array indicates when that image was displayed.
|
||||||
|
@ -473,10 +535,8 @@ class IndexSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: NDArray[Shape["* num_times"], int] = Field(
|
data: IndexSeriesData = Field(
|
||||||
...,
|
..., description="""Index of the frame in the referenced ImageSeries."""
|
||||||
description="""Index of the frame in the referenced ImageSeries.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
|
||||||
)
|
)
|
||||||
indexed_timeseries: Union[ImageSeries, str] = Field(
|
indexed_timeseries: Union[ImageSeries, str] = Field(
|
||||||
...,
|
...,
|
||||||
|
@ -524,13 +584,46 @@ class IndexSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class IndexSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Index of the frame in the referenced ImageSeries.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.image"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: str = Field(
|
||||||
|
...,
|
||||||
|
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'.""",
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
GrayscaleImage.model_rebuild()
|
GrayscaleImage.model_rebuild()
|
||||||
RGBImage.model_rebuild()
|
RGBImage.model_rebuild()
|
||||||
RGBAImage.model_rebuild()
|
RGBAImage.model_rebuild()
|
||||||
ImageSeries.model_rebuild()
|
ImageSeries.model_rebuild()
|
||||||
|
ImageSeriesData.model_rebuild()
|
||||||
ImageSeriesExternalFile.model_rebuild()
|
ImageSeriesExternalFile.model_rebuild()
|
||||||
ImageMaskSeries.model_rebuild()
|
ImageMaskSeries.model_rebuild()
|
||||||
OpticalSeries.model_rebuild()
|
OpticalSeries.model_rebuild()
|
||||||
|
OpticalSeriesData.model_rebuild()
|
||||||
IndexSeries.model_rebuild()
|
IndexSeries.model_rebuild()
|
||||||
|
IndexSeriesData.model_rebuild()
|
||||||
|
|
|
@ -251,6 +251,16 @@ class AbstractFeatureSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Optional[str] = Field(
|
unit: Optional[str] = Field(
|
||||||
"see ",
|
"see ",
|
||||||
description="""Since there can be different units for different features, store the units in 'feature_units'. The default value for this attribute is \"see 'feature_units'\".""",
|
description="""Since there can be different units for different features, store the units in 'feature_units'. The default value for this attribute is \"see 'feature_units'\".""",
|
||||||
|
@ -258,8 +268,8 @@ class AbstractFeatureSeriesData(ConfiguredBaseModel):
|
||||||
)
|
)
|
||||||
value: Optional[
|
value: Optional[
|
||||||
Union[
|
Union[
|
||||||
NDArray[Shape["* num_times"], float],
|
NDArray[Shape["* num_times"], float | int],
|
||||||
NDArray[Shape["* num_times, * num_features"], float],
|
NDArray[Shape["* num_times, * num_features"], float | int],
|
||||||
]
|
]
|
||||||
] = Field(None)
|
] = Field(None)
|
||||||
|
|
||||||
|
@ -274,10 +284,8 @@ class AnnotationSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: NDArray[Shape["* num_times"], str] = Field(
|
data: AnnotationSeriesData = Field(
|
||||||
...,
|
..., description="""Annotations made during an experiment."""
|
||||||
description="""Annotations made during an experiment.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -316,6 +324,39 @@ class AnnotationSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class AnnotationSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Annotations made during an experiment.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.misc"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: float = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data. Annotations have no units, so the value is fixed to -1.0.""",
|
||||||
|
le=-1,
|
||||||
|
ge=-1,
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["n/a"] = Field(
|
||||||
|
"n/a",
|
||||||
|
description="""Base unit of measurement for working with the data. Annotations have no units, so the value is fixed to 'n/a'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "n/a", "ifabsent": "string(n/a)"}},
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], str]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class IntervalSeries(TimeSeries):
|
class IntervalSeries(TimeSeries):
|
||||||
"""
|
"""
|
||||||
Stores intervals of data. The timestamps field stores the beginning and end of intervals. The data field stores whether the interval just started (>0 value) or ended (<0 value). Different interval types can be represented in the same series by using multiple key values (eg, 1 for feature A, 2 for feature B, 3 for feature C, etc). The field data stores an 8-bit integer. This is largely an alias of a standard TimeSeries but that is identifiable as representing time intervals in a machine-readable way.
|
Stores intervals of data. The timestamps field stores the beginning and end of intervals. The data field stores whether the interval just started (>0 value) or ended (<0 value). Different interval types can be represented in the same series by using multiple key values (eg, 1 for feature A, 2 for feature B, 3 for feature C, etc). The field data stores an 8-bit integer. This is largely an alias of a standard TimeSeries but that is identifiable as representing time intervals in a machine-readable way.
|
||||||
|
@ -326,10 +367,8 @@ class IntervalSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: NDArray[Shape["* num_times"], int] = Field(
|
data: IntervalSeriesData = Field(
|
||||||
...,
|
..., description="""Use values >0 if interval started, <0 if interval ended."""
|
||||||
description="""Use values >0 if interval started, <0 if interval ended.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -368,6 +407,39 @@ class IntervalSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class IntervalSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Use values >0 if interval started, <0 if interval ended.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.misc"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: float = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data. Annotations have no units, so the value is fixed to -1.0.""",
|
||||||
|
le=-1,
|
||||||
|
ge=-1,
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["n/a"] = Field(
|
||||||
|
"n/a",
|
||||||
|
description="""Base unit of measurement for working with the data. Annotations have no units, so the value is fixed to 'n/a'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "n/a", "ifabsent": "string(n/a)"}},
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class DecompositionSeries(TimeSeries):
|
class DecompositionSeries(TimeSeries):
|
||||||
"""
|
"""
|
||||||
Spectral analysis of a time series, e.g. of an LFP or a speech signal.
|
Spectral analysis of a time series, e.g. of an LFP or a speech signal.
|
||||||
|
@ -443,24 +515,36 @@ class DecompositionSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: str = Field(
|
unit: str = Field(
|
||||||
"no unit",
|
"no unit",
|
||||||
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'.""",
|
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'.""",
|
||||||
json_schema_extra={"linkml_meta": {"ifabsent": "string(no unit)"}},
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(no unit)"}},
|
||||||
)
|
)
|
||||||
value: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float]] = Field(
|
value: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float | int]] = (
|
||||||
None,
|
Field(
|
||||||
json_schema_extra={
|
None,
|
||||||
"linkml_meta": {
|
json_schema_extra={
|
||||||
"array": {
|
"linkml_meta": {
|
||||||
"dimensions": [
|
"array": {
|
||||||
{"alias": "num_times"},
|
"dimensions": [
|
||||||
{"alias": "num_channels"},
|
{"alias": "num_times"},
|
||||||
{"alias": "num_bands"},
|
{"alias": "num_channels"},
|
||||||
]
|
{"alias": "num_bands"},
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
},
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -518,9 +602,6 @@ class DecompositionSeriesBands(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class Units(DynamicTable):
|
class Units(DynamicTable):
|
||||||
|
@ -533,9 +614,18 @@ class Units(DynamicTable):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field("Units", json_schema_extra={"linkml_meta": {"ifabsent": "string(Units)"}})
|
name: str = Field("Units", json_schema_extra={"linkml_meta": {"ifabsent": "string(Units)"}})
|
||||||
spike_times_index: Optional[Named[VectorIndex]] = Field(
|
electrode_group: Optional[VectorData[NDArray[Any, ElectrodeGroup]]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Index into the spike_times dataset.""",
|
description="""Electrode group that each spike unit came from.""",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {
|
||||||
|
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
electrodes: Optional[Named[DynamicTableRegion]] = Field(
|
||||||
|
None,
|
||||||
|
description="""Electrode that each spike unit came from, specified using a DynamicTableRegion.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"annotations": {
|
"annotations": {
|
||||||
|
@ -545,12 +635,9 @@ class Units(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
spike_times: Optional[UnitsSpikeTimes] = Field(
|
electrodes_index: Optional[Named[VectorIndex]] = Field(
|
||||||
None, description="""Spike times for each unit."""
|
|
||||||
)
|
|
||||||
obs_intervals_index: Optional[Named[VectorIndex]] = Field(
|
|
||||||
None,
|
None,
|
||||||
description="""Index into the obs_intervals dataset.""",
|
description="""Index into electrodes.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"annotations": {
|
"annotations": {
|
||||||
|
@ -576,9 +663,9 @@ class Units(DynamicTable):
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
electrodes_index: Optional[Named[VectorIndex]] = Field(
|
obs_intervals_index: Optional[Named[VectorIndex]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Index into electrodes.""",
|
description="""Index into the obs_intervals dataset.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"annotations": {
|
"annotations": {
|
||||||
|
@ -588,9 +675,12 @@ class Units(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
electrodes: Optional[Named[DynamicTableRegion]] = Field(
|
spike_times: Optional[UnitsSpikeTimes] = Field(
|
||||||
|
None, description="""Spike times for each unit."""
|
||||||
|
)
|
||||||
|
spike_times_index: Optional[Named[VectorIndex]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Electrode that each spike unit came from, specified using a DynamicTableRegion.""",
|
description="""Index into the spike_times dataset.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"annotations": {
|
"annotations": {
|
||||||
|
@ -600,25 +690,12 @@ class Units(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
electrode_group: Optional[List[ElectrodeGroup]] = Field(
|
waveform_mean: Optional[UnitsWaveformMean] = Field(
|
||||||
None, description="""Electrode group that each spike unit came from."""
|
None, description="""Spike waveform mean for each spike unit."""
|
||||||
|
)
|
||||||
|
waveform_sd: Optional[UnitsWaveformSd] = Field(
|
||||||
|
None, description="""Spike waveform standard deviation for each spike unit."""
|
||||||
)
|
)
|
||||||
waveform_mean: Optional[
|
|
||||||
VectorData[
|
|
||||||
Union[
|
|
||||||
NDArray[Shape["* num_units, * num_samples"], float],
|
|
||||||
NDArray[Shape["* num_units, * num_samples, * num_electrodes"], float],
|
|
||||||
]
|
|
||||||
]
|
|
||||||
] = Field(None, description="""Spike waveform mean for each spike unit.""")
|
|
||||||
waveform_sd: Optional[
|
|
||||||
VectorData[
|
|
||||||
Union[
|
|
||||||
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.""")
|
|
||||||
colnames: List[str] = Field(
|
colnames: List[str] = Field(
|
||||||
...,
|
...,
|
||||||
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
|
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
|
||||||
|
@ -629,9 +706,6 @@ class Units(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class UnitsSpikeTimes(VectorData):
|
class UnitsSpikeTimes(VectorData):
|
||||||
|
@ -662,14 +736,78 @@ class UnitsSpikeTimes(VectorData):
|
||||||
] = Field(None)
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
|
class UnitsWaveformMean(VectorData):
|
||||||
|
"""
|
||||||
|
Spike waveform mean for each spike unit.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.misc"})
|
||||||
|
|
||||||
|
name: Literal["waveform_mean"] = Field(
|
||||||
|
"waveform_mean",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {"equals_string": "waveform_mean", "ifabsent": "string(waveform_mean)"}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
sampling_rate: Optional[float] = Field(None, description="""Sampling rate, in hertz.""")
|
||||||
|
unit: Optional[Literal["volts"]] = Field(
|
||||||
|
"volts",
|
||||||
|
description="""Unit of measurement. This value is fixed to 'volts'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
|
)
|
||||||
|
description: str = Field(..., description="""Description of what these vectors represent.""")
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* dim0"], Any],
|
||||||
|
NDArray[Shape["* dim0, * dim1"], Any],
|
||||||
|
NDArray[Shape["* dim0, * dim1, * dim2"], Any],
|
||||||
|
NDArray[Shape["* dim0, * dim1, * dim2, * dim3"], Any],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
|
class UnitsWaveformSd(VectorData):
|
||||||
|
"""
|
||||||
|
Spike waveform standard deviation for each spike unit.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.misc"})
|
||||||
|
|
||||||
|
name: Literal["waveform_sd"] = Field(
|
||||||
|
"waveform_sd",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {"equals_string": "waveform_sd", "ifabsent": "string(waveform_sd)"}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
sampling_rate: Optional[float] = Field(None, description="""Sampling rate, in hertz.""")
|
||||||
|
unit: Optional[Literal["volts"]] = Field(
|
||||||
|
"volts",
|
||||||
|
description="""Unit of measurement. This value is fixed to 'volts'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
|
)
|
||||||
|
description: str = Field(..., description="""Description of what these vectors represent.""")
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* dim0"], Any],
|
||||||
|
NDArray[Shape["* dim0, * dim1"], Any],
|
||||||
|
NDArray[Shape["* dim0, * dim1, * dim2"], Any],
|
||||||
|
NDArray[Shape["* dim0, * dim1, * dim2, * dim3"], Any],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
AbstractFeatureSeries.model_rebuild()
|
AbstractFeatureSeries.model_rebuild()
|
||||||
AbstractFeatureSeriesData.model_rebuild()
|
AbstractFeatureSeriesData.model_rebuild()
|
||||||
AnnotationSeries.model_rebuild()
|
AnnotationSeries.model_rebuild()
|
||||||
|
AnnotationSeriesData.model_rebuild()
|
||||||
IntervalSeries.model_rebuild()
|
IntervalSeries.model_rebuild()
|
||||||
|
IntervalSeriesData.model_rebuild()
|
||||||
DecompositionSeries.model_rebuild()
|
DecompositionSeries.model_rebuild()
|
||||||
DecompositionSeriesData.model_rebuild()
|
DecompositionSeriesData.model_rebuild()
|
||||||
DecompositionSeriesBands.model_rebuild()
|
DecompositionSeriesBands.model_rebuild()
|
||||||
Units.model_rebuild()
|
Units.model_rebuild()
|
||||||
UnitsSpikeTimes.model_rebuild()
|
UnitsSpikeTimes.model_rebuild()
|
||||||
|
UnitsWaveformMean.model_rebuild()
|
||||||
|
UnitsWaveformSd.model_rebuild()
|
||||||
|
|
|
@ -158,10 +158,8 @@ class OptogeneticSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: NDArray[Shape["* num_times"], float] = Field(
|
data: OptogeneticSeriesData = Field(
|
||||||
...,
|
..., description="""Applied power for optogenetic stimulus, in watts."""
|
||||||
description="""Applied power for optogenetic stimulus, in watts.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
|
||||||
)
|
)
|
||||||
site: Union[OptogeneticStimulusSite, str] = Field(
|
site: Union[OptogeneticStimulusSite, str] = Field(
|
||||||
...,
|
...,
|
||||||
|
@ -209,6 +207,37 @@ class OptogeneticSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class OptogeneticSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Applied power for optogenetic stimulus, in watts.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.ogen"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["watts"] = Field(
|
||||||
|
"watts",
|
||||||
|
description="""Unit of measurement for data, which is fixed to 'watts'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "watts", "ifabsent": "string(watts)"}},
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class OptogeneticStimulusSite(NWBContainer):
|
class OptogeneticStimulusSite(NWBContainer):
|
||||||
"""
|
"""
|
||||||
A site of optogenetic stimulation.
|
A site of optogenetic stimulation.
|
||||||
|
@ -239,4 +268,5 @@ class OptogeneticStimulusSite(NWBContainer):
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
OptogeneticSeries.model_rebuild()
|
OptogeneticSeries.model_rebuild()
|
||||||
|
OptogeneticSeriesData.model_rebuild()
|
||||||
OptogeneticStimulusSite.model_rebuild()
|
OptogeneticStimulusSite.model_rebuild()
|
||||||
|
|
|
@ -28,7 +28,7 @@ from ...core.v2_2_4.core_nwb_base import (
|
||||||
TimeSeriesSync,
|
TimeSeriesSync,
|
||||||
)
|
)
|
||||||
from ...core.v2_2_4.core_nwb_device import Device
|
from ...core.v2_2_4.core_nwb_device import Device
|
||||||
from ...core.v2_2_4.core_nwb_image import ImageSeries, ImageSeriesExternalFile
|
from ...core.v2_2_4.core_nwb_image import ImageSeries, ImageSeriesData, ImageSeriesExternalFile
|
||||||
from ...hdmf_common.v1_1_3.hdmf_common_table import (
|
from ...hdmf_common.v1_1_3.hdmf_common_table import (
|
||||||
DynamicTable,
|
DynamicTable,
|
||||||
DynamicTableRegion,
|
DynamicTableRegion,
|
||||||
|
@ -215,12 +215,9 @@ class TwoPhotonSeries(ImageSeries):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
data: Optional[
|
data: Optional[ImageSeriesData] = Field(
|
||||||
Union[
|
None, description="""Binary data representing images across frames."""
|
||||||
NDArray[Shape["* frame, * x, * y"], float],
|
)
|
||||||
NDArray[Shape["* frame, * x, * y, * z"], float],
|
|
||||||
]
|
|
||||||
] = Field(None, description="""Binary data representing images across frames.""")
|
|
||||||
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Number of pixels on x, y, (and z) axes.""",
|
description="""Number of pixels on x, y, (and z) axes.""",
|
||||||
|
@ -231,8 +228,9 @@ class TwoPhotonSeries(ImageSeries):
|
||||||
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
||||||
)
|
)
|
||||||
format: Optional[str] = Field(
|
format: Optional[str] = Field(
|
||||||
None,
|
"raw",
|
||||||
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="""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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(raw)"}},
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -281,9 +279,7 @@ class RoiResponseSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: Union[
|
data: RoiResponseSeriesData = Field(..., description="""Signals from ROIs.""")
|
||||||
NDArray[Shape["* num_times"], float], NDArray[Shape["* num_times, * num_rois"], float]
|
|
||||||
] = Field(..., description="""Signals from ROIs.""")
|
|
||||||
rois: Named[DynamicTableRegion] = Field(
|
rois: Named[DynamicTableRegion] = Field(
|
||||||
...,
|
...,
|
||||||
description="""DynamicTableRegion referencing into an ROITable containing information on the ROIs stored in this timeseries.""",
|
description="""DynamicTableRegion referencing into an ROITable containing information on the ROIs stored in this timeseries.""",
|
||||||
|
@ -333,6 +329,39 @@ class RoiResponseSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class RoiResponseSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Signals from ROIs.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.ophys"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: str = Field(
|
||||||
|
...,
|
||||||
|
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'.""",
|
||||||
|
)
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* num_times"], float | int],
|
||||||
|
NDArray[Shape["* num_times, * num_rois"], float | int],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class DfOverF(NWBDataInterface):
|
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).
|
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).
|
||||||
|
@ -342,10 +371,10 @@ class DfOverF(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[RoiResponseSeries]] = Field(
|
name: str = Field("DfOverF", json_schema_extra={"linkml_meta": {"ifabsent": "string(DfOverF)"}})
|
||||||
|
value: Optional[Dict[str, RoiResponseSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "RoiResponseSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "RoiResponseSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class Fluorescence(NWBDataInterface):
|
class Fluorescence(NWBDataInterface):
|
||||||
|
@ -357,10 +386,12 @@ class Fluorescence(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[RoiResponseSeries]] = Field(
|
name: str = Field(
|
||||||
|
"Fluorescence", json_schema_extra={"linkml_meta": {"ifabsent": "string(Fluorescence)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, RoiResponseSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "RoiResponseSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "RoiResponseSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class ImageSegmentation(NWBDataInterface):
|
class ImageSegmentation(NWBDataInterface):
|
||||||
|
@ -372,10 +403,13 @@ class ImageSegmentation(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[PlaneSegmentation]] = Field(
|
name: str = Field(
|
||||||
|
"ImageSegmentation",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(ImageSegmentation)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, PlaneSegmentation]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "PlaneSegmentation"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "PlaneSegmentation"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class PlaneSegmentation(DynamicTable):
|
class PlaneSegmentation(DynamicTable):
|
||||||
|
@ -388,10 +422,21 @@ class PlaneSegmentation(DynamicTable):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
image_mask: Optional[PlaneSegmentationImageMask] = Field(
|
image_mask: Optional[
|
||||||
|
VectorData[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* num_roi, * num_x, * num_y"], Any],
|
||||||
|
NDArray[Shape["* num_roi, * num_x, * num_y, * num_z"], Any],
|
||||||
|
]
|
||||||
|
]
|
||||||
|
] = Field(
|
||||||
None,
|
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.""",
|
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: Optional[PlaneSegmentationPixelMask] = 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""",
|
||||||
|
)
|
||||||
pixel_mask_index: Optional[Named[VectorIndex]] = Field(
|
pixel_mask_index: Optional[Named[VectorIndex]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Index into pixel_mask.""",
|
description="""Index into pixel_mask.""",
|
||||||
|
@ -404,9 +449,9 @@ class PlaneSegmentation(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
pixel_mask: Optional[PlaneSegmentationPixelMask] = Field(
|
voxel_mask: Optional[PlaneSegmentationVoxelMask] = Field(
|
||||||
None,
|
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""",
|
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""",
|
||||||
)
|
)
|
||||||
voxel_mask_index: Optional[Named[VectorIndex]] = Field(
|
voxel_mask_index: Optional[Named[VectorIndex]] = Field(
|
||||||
None,
|
None,
|
||||||
|
@ -420,11 +465,7 @@ class PlaneSegmentation(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
voxel_mask: Optional[PlaneSegmentationVoxelMask] = Field(
|
reference_images: Optional[Dict[str, ImageSeries]] = 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""",
|
|
||||||
)
|
|
||||||
reference_images: Optional[List[ImageSeries]] = Field(
|
|
||||||
None,
|
None,
|
||||||
description="""Image stacks that the segmentation masks apply to.""",
|
description="""Image stacks that the segmentation masks apply to.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ImageSeries"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ImageSeries"}]}},
|
||||||
|
@ -448,33 +489,6 @@ class PlaneSegmentation(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class PlaneSegmentationImageMask(VectorData):
|
|
||||||
"""
|
|
||||||
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.
|
|
||||||
"""
|
|
||||||
|
|
||||||
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.ophys"})
|
|
||||||
|
|
||||||
name: Literal["image_mask"] = Field(
|
|
||||||
"image_mask",
|
|
||||||
json_schema_extra={
|
|
||||||
"linkml_meta": {"equals_string": "image_mask", "ifabsent": "string(image_mask)"}
|
|
||||||
},
|
|
||||||
)
|
|
||||||
description: str = Field(..., description="""Description of what these vectors represent.""")
|
|
||||||
value: Optional[
|
|
||||||
Union[
|
|
||||||
NDArray[Shape["* dim0"], Any],
|
|
||||||
NDArray[Shape["* dim0, * dim1"], Any],
|
|
||||||
NDArray[Shape["* dim0, * dim1, * dim2"], Any],
|
|
||||||
NDArray[Shape["* dim0, * dim1, * dim2, * dim3"], Any],
|
|
||||||
]
|
|
||||||
] = Field(None)
|
|
||||||
|
|
||||||
|
|
||||||
class PlaneSegmentationPixelMask(VectorData):
|
class PlaneSegmentationPixelMask(VectorData):
|
||||||
|
@ -597,7 +611,7 @@ class ImagingPlane(NWBContainer):
|
||||||
None,
|
None,
|
||||||
description="""Describes reference frame of origin_coords and grid_spacing. For example, this can be a text description of the anatomical location and orientation of the grid defined by origin_coords and grid_spacing or the vectors needed to transform or rotate the grid to a common anatomical axis (e.g., AP/DV/ML). This field is necessary to interpret origin_coords and grid_spacing. If origin_coords and grid_spacing are not present, then this field is not required. For example, if the microscope takes 10 x 10 x 2 images, where the first value of the data matrix (index (0, 0, 0)) corresponds to (-1.2, -0.6, -2) mm relative to bregma, the spacing between pixels is 0.2 mm in x, 0.2 mm in y and 0.5 mm in z, and larger numbers in x means more anterior, larger numbers in y means more rightward, and larger numbers in z means more ventral, then enter the following -- origin_coords = (-1.2, -0.6, -2) grid_spacing = (0.2, 0.2, 0.5) reference_frame = \"Origin coordinates are relative to bregma. First dimension corresponds to anterior-posterior axis (larger index = more anterior). Second dimension corresponds to medial-lateral axis (larger index = more rightward). Third dimension corresponds to dorsal-ventral axis (larger index = more ventral).\"""",
|
description="""Describes reference frame of origin_coords and grid_spacing. For example, this can be a text description of the anatomical location and orientation of the grid defined by origin_coords and grid_spacing or the vectors needed to transform or rotate the grid to a common anatomical axis (e.g., AP/DV/ML). This field is necessary to interpret origin_coords and grid_spacing. If origin_coords and grid_spacing are not present, then this field is not required. For example, if the microscope takes 10 x 10 x 2 images, where the first value of the data matrix (index (0, 0, 0)) corresponds to (-1.2, -0.6, -2) mm relative to bregma, the spacing between pixels is 0.2 mm in x, 0.2 mm in y and 0.5 mm in z, and larger numbers in x means more anterior, larger numbers in y means more rightward, and larger numbers in z means more ventral, then enter the following -- origin_coords = (-1.2, -0.6, -2) grid_spacing = (0.2, 0.2, 0.5) reference_frame = \"Origin coordinates are relative to bregma. First dimension corresponds to anterior-posterior axis (larger index = more anterior). Second dimension corresponds to medial-lateral axis (larger index = more rightward). Third dimension corresponds to dorsal-ventral axis (larger index = more ventral).\"""",
|
||||||
)
|
)
|
||||||
optical_channel: List[OpticalChannel] = Field(
|
optical_channel: Dict[str, OpticalChannel] = Field(
|
||||||
..., description="""An optical channel used to record from an imaging plane."""
|
..., description="""An optical channel used to record from an imaging plane."""
|
||||||
)
|
)
|
||||||
device: Union[Device, str] = Field(
|
device: Union[Device, str] = Field(
|
||||||
|
@ -731,10 +745,13 @@ class MotionCorrection(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[CorrectedImageStack]] = Field(
|
name: str = Field(
|
||||||
|
"MotionCorrection",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(MotionCorrection)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, CorrectedImageStack]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "CorrectedImageStack"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "CorrectedImageStack"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class CorrectedImageStack(NWBDataInterface):
|
class CorrectedImageStack(NWBDataInterface):
|
||||||
|
@ -769,11 +786,11 @@ class CorrectedImageStack(NWBDataInterface):
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
TwoPhotonSeries.model_rebuild()
|
TwoPhotonSeries.model_rebuild()
|
||||||
RoiResponseSeries.model_rebuild()
|
RoiResponseSeries.model_rebuild()
|
||||||
|
RoiResponseSeriesData.model_rebuild()
|
||||||
DfOverF.model_rebuild()
|
DfOverF.model_rebuild()
|
||||||
Fluorescence.model_rebuild()
|
Fluorescence.model_rebuild()
|
||||||
ImageSegmentation.model_rebuild()
|
ImageSegmentation.model_rebuild()
|
||||||
PlaneSegmentation.model_rebuild()
|
PlaneSegmentation.model_rebuild()
|
||||||
PlaneSegmentationImageMask.model_rebuild()
|
|
||||||
PlaneSegmentationPixelMask.model_rebuild()
|
PlaneSegmentationPixelMask.model_rebuild()
|
||||||
PlaneSegmentationVoxelMask.model_rebuild()
|
PlaneSegmentationVoxelMask.model_rebuild()
|
||||||
ImagingPlane.model_rebuild()
|
ImagingPlane.model_rebuild()
|
||||||
|
|
|
@ -38,6 +38,7 @@ from ...core.v2_2_4.core_nwb_ecephys import (
|
||||||
ClusterWaveforms,
|
ClusterWaveforms,
|
||||||
Clustering,
|
Clustering,
|
||||||
ElectricalSeries,
|
ElectricalSeries,
|
||||||
|
ElectricalSeriesData,
|
||||||
ElectrodeGroup,
|
ElectrodeGroup,
|
||||||
ElectrodeGroupPosition,
|
ElectrodeGroupPosition,
|
||||||
EventDetection,
|
EventDetection,
|
||||||
|
@ -46,6 +47,7 @@ from ...core.v2_2_4.core_nwb_ecephys import (
|
||||||
FilteredEphys,
|
FilteredEphys,
|
||||||
LFP,
|
LFP,
|
||||||
SpikeEventSeries,
|
SpikeEventSeries,
|
||||||
|
SpikeEventSeriesData,
|
||||||
)
|
)
|
||||||
from ...core.v2_2_4.core_nwb_epoch import TimeIntervals, TimeIntervalsTimeseries
|
from ...core.v2_2_4.core_nwb_epoch import TimeIntervals, TimeIntervalsTimeseries
|
||||||
from ...core.v2_2_4.core_nwb_file import (
|
from ...core.v2_2_4.core_nwb_file import (
|
||||||
|
@ -87,9 +89,12 @@ from ...core.v2_2_4.core_nwb_image import (
|
||||||
GrayscaleImage,
|
GrayscaleImage,
|
||||||
ImageMaskSeries,
|
ImageMaskSeries,
|
||||||
ImageSeries,
|
ImageSeries,
|
||||||
|
ImageSeriesData,
|
||||||
ImageSeriesExternalFile,
|
ImageSeriesExternalFile,
|
||||||
IndexSeries,
|
IndexSeries,
|
||||||
|
IndexSeriesData,
|
||||||
OpticalSeries,
|
OpticalSeries,
|
||||||
|
OpticalSeriesData,
|
||||||
RGBAImage,
|
RGBAImage,
|
||||||
RGBImage,
|
RGBImage,
|
||||||
)
|
)
|
||||||
|
@ -97,14 +102,22 @@ from ...core.v2_2_4.core_nwb_misc import (
|
||||||
AbstractFeatureSeries,
|
AbstractFeatureSeries,
|
||||||
AbstractFeatureSeriesData,
|
AbstractFeatureSeriesData,
|
||||||
AnnotationSeries,
|
AnnotationSeries,
|
||||||
|
AnnotationSeriesData,
|
||||||
DecompositionSeries,
|
DecompositionSeries,
|
||||||
DecompositionSeriesBands,
|
DecompositionSeriesBands,
|
||||||
DecompositionSeriesData,
|
DecompositionSeriesData,
|
||||||
IntervalSeries,
|
IntervalSeries,
|
||||||
|
IntervalSeriesData,
|
||||||
Units,
|
Units,
|
||||||
UnitsSpikeTimes,
|
UnitsSpikeTimes,
|
||||||
|
UnitsWaveformMean,
|
||||||
|
UnitsWaveformSd,
|
||||||
|
)
|
||||||
|
from ...core.v2_2_4.core_nwb_ogen import (
|
||||||
|
OptogeneticSeries,
|
||||||
|
OptogeneticSeriesData,
|
||||||
|
OptogeneticStimulusSite,
|
||||||
)
|
)
|
||||||
from ...core.v2_2_4.core_nwb_ogen import OptogeneticSeries, OptogeneticStimulusSite
|
|
||||||
from ...core.v2_2_4.core_nwb_ophys import (
|
from ...core.v2_2_4.core_nwb_ophys import (
|
||||||
CorrectedImageStack,
|
CorrectedImageStack,
|
||||||
DfOverF,
|
DfOverF,
|
||||||
|
@ -117,10 +130,10 @@ from ...core.v2_2_4.core_nwb_ophys import (
|
||||||
MotionCorrection,
|
MotionCorrection,
|
||||||
OpticalChannel,
|
OpticalChannel,
|
||||||
PlaneSegmentation,
|
PlaneSegmentation,
|
||||||
PlaneSegmentationImageMask,
|
|
||||||
PlaneSegmentationPixelMask,
|
PlaneSegmentationPixelMask,
|
||||||
PlaneSegmentationVoxelMask,
|
PlaneSegmentationVoxelMask,
|
||||||
RoiResponseSeries,
|
RoiResponseSeries,
|
||||||
|
RoiResponseSeriesData,
|
||||||
TwoPhotonSeries,
|
TwoPhotonSeries,
|
||||||
)
|
)
|
||||||
from ...core.v2_2_4.core_nwb_retinotopy import (
|
from ...core.v2_2_4.core_nwb_retinotopy import (
|
||||||
|
|
|
@ -170,9 +170,9 @@ class Image(NWBData):
|
||||||
description: Optional[str] = Field(None, description="""Description of the image.""")
|
description: Optional[str] = Field(None, description="""Description of the image.""")
|
||||||
value: Optional[
|
value: Optional[
|
||||||
Union[
|
Union[
|
||||||
NDArray[Shape["* x, * y"], float],
|
NDArray[Shape["* x, * y"], float | int],
|
||||||
NDArray[Shape["* x, * y, 3 r_g_b"], float],
|
NDArray[Shape["* x, * y, 3 r_g_b"], float | int],
|
||||||
NDArray[Shape["* x, * y, 4 r_g_b_a"], float],
|
NDArray[Shape["* x, * y, 4 r_g_b_a"], float | int],
|
||||||
]
|
]
|
||||||
] = Field(None)
|
] = Field(None)
|
||||||
|
|
||||||
|
@ -333,13 +333,16 @@ class ProcessingModule(NWBContainer):
|
||||||
{"from_schema": "core.nwb.base", "tree_root": True}
|
{"from_schema": "core.nwb.base", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[Union[DynamicTable, NWBDataInterface]]] = Field(
|
name: str = Field(...)
|
||||||
|
description: str = Field(
|
||||||
|
..., description="""Description of this collection of processed data."""
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, Union[DynamicTable, NWBDataInterface]]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}, {"range": "DynamicTable"}]}
|
"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}, {"range": "DynamicTable"}]}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class Images(NWBDataInterface):
|
class Images(NWBDataInterface):
|
||||||
|
@ -353,7 +356,7 @@ class Images(NWBDataInterface):
|
||||||
|
|
||||||
name: str = Field("Images", json_schema_extra={"linkml_meta": {"ifabsent": "string(Images)"}})
|
name: str = Field("Images", json_schema_extra={"linkml_meta": {"ifabsent": "string(Images)"}})
|
||||||
description: str = Field(..., description="""Description of this collection of images.""")
|
description: str = Field(..., description="""Description of this collection of images.""")
|
||||||
image: List[Image] = Field(..., description="""Images stored in this collection.""")
|
image: List[str] = Field(..., description="""Images stored in this collection.""")
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
|
|
|
@ -213,6 +213,16 @@ class SpatialSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Optional[str] = Field(
|
unit: Optional[str] = Field(
|
||||||
"meters",
|
"meters",
|
||||||
description="""Base unit of measurement for working with the data. The default value is 'meters'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
description="""Base unit of measurement for working with the data. The default value is 'meters'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
|
@ -220,8 +230,8 @@ class SpatialSeriesData(ConfiguredBaseModel):
|
||||||
)
|
)
|
||||||
value: Optional[
|
value: Optional[
|
||||||
Union[
|
Union[
|
||||||
NDArray[Shape["* num_times"], float],
|
NDArray[Shape["* num_times"], float | int],
|
||||||
NDArray[Shape["* num_times, * num_features"], float],
|
NDArray[Shape["* num_times, * num_features"], float | int],
|
||||||
]
|
]
|
||||||
] = Field(None)
|
] = Field(None)
|
||||||
|
|
||||||
|
@ -235,10 +245,13 @@ class BehavioralEpochs(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[IntervalSeries]] = Field(
|
name: str = Field(
|
||||||
|
"BehavioralEpochs",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(BehavioralEpochs)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, IntervalSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "IntervalSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "IntervalSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class BehavioralEvents(NWBDataInterface):
|
class BehavioralEvents(NWBDataInterface):
|
||||||
|
@ -250,10 +263,13 @@ class BehavioralEvents(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[TimeSeries]] = Field(
|
name: str = Field(
|
||||||
|
"BehavioralEvents",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(BehavioralEvents)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class BehavioralTimeSeries(NWBDataInterface):
|
class BehavioralTimeSeries(NWBDataInterface):
|
||||||
|
@ -265,10 +281,13 @@ class BehavioralTimeSeries(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[TimeSeries]] = Field(
|
name: str = Field(
|
||||||
|
"BehavioralTimeSeries",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(BehavioralTimeSeries)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class PupilTracking(NWBDataInterface):
|
class PupilTracking(NWBDataInterface):
|
||||||
|
@ -280,10 +299,12 @@ class PupilTracking(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[TimeSeries]] = Field(
|
name: str = Field(
|
||||||
|
"PupilTracking", json_schema_extra={"linkml_meta": {"ifabsent": "string(PupilTracking)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class EyeTracking(NWBDataInterface):
|
class EyeTracking(NWBDataInterface):
|
||||||
|
@ -295,10 +316,12 @@ class EyeTracking(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[SpatialSeries]] = Field(
|
name: str = Field(
|
||||||
|
"EyeTracking", json_schema_extra={"linkml_meta": {"ifabsent": "string(EyeTracking)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, SpatialSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class CompassDirection(NWBDataInterface):
|
class CompassDirection(NWBDataInterface):
|
||||||
|
@ -310,10 +333,13 @@ class CompassDirection(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[SpatialSeries]] = Field(
|
name: str = Field(
|
||||||
|
"CompassDirection",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(CompassDirection)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, SpatialSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class Position(NWBDataInterface):
|
class Position(NWBDataInterface):
|
||||||
|
@ -325,10 +351,12 @@ class Position(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
{"from_schema": "core.nwb.behavior", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[SpatialSeries]] = Field(
|
name: str = Field(
|
||||||
|
"Position", json_schema_extra={"linkml_meta": {"ifabsent": "string(Position)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, SpatialSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpatialSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
|
|
|
@ -190,11 +190,12 @@ class ElectricalSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: Union[
|
channel_conversion: Optional[NDArray[Shape["* num_channels"], float]] = Field(
|
||||||
NDArray[Shape["* num_times"], float],
|
None,
|
||||||
NDArray[Shape["* num_times, * num_channels"], float],
|
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.""",
|
||||||
NDArray[Shape["* num_times, * num_channels, * num_samples"], float],
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_channels"}]}}},
|
||||||
] = Field(..., description="""Recorded voltage data.""")
|
)
|
||||||
|
data: ElectricalSeriesData = Field(..., description="""Recorded voltage data.""")
|
||||||
electrodes: Named[DynamicTableRegion] = Field(
|
electrodes: Named[DynamicTableRegion] = Field(
|
||||||
...,
|
...,
|
||||||
description="""DynamicTableRegion pointer to the electrodes that this time series was generated from.""",
|
description="""DynamicTableRegion pointer to the electrodes that this time series was generated from.""",
|
||||||
|
@ -207,11 +208,6 @@ class ElectricalSeries(TimeSeries):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
channel_conversion: Optional[NDArray[Shape["* num_channels"], float]] = Field(
|
|
||||||
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.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_channels"}]}}},
|
|
||||||
)
|
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
description="""Description of the time series.""",
|
description="""Description of the time series.""",
|
||||||
|
@ -249,6 +245,41 @@ class ElectricalSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ElectricalSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Recorded voltage data.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.ecephys"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["volts"] = Field(
|
||||||
|
"volts",
|
||||||
|
description="""Base unit of measurement for working with the data. This value is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion' and 'channel_conversion' (if present).""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
|
)
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* num_times"], float | int],
|
||||||
|
NDArray[Shape["* num_times, * num_channels"], float | int],
|
||||||
|
NDArray[Shape["* num_times, * num_channels, * num_samples"], float | int],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class SpikeEventSeries(ElectricalSeries):
|
class SpikeEventSeries(ElectricalSeries):
|
||||||
"""
|
"""
|
||||||
Stores snapshots/snippets of recorded spike events (i.e., threshold crossings). This may also be raw data, as reported by ephys hardware. If so, the TimeSeries::description field should describe how events were detected. All SpikeEventSeries should reside in a module (under EventWaveform interface) even if the spikes were reported and stored by hardware. All events span the same recording channels and store snapshots of equal duration. TimeSeries::data array structure: [num events] [num channels] [num samples] (or [num events] [num samples] for single electrode).
|
Stores snapshots/snippets of recorded spike events (i.e., threshold crossings). This may also be raw data, as reported by ephys hardware. If so, the TimeSeries::description field should describe how events were detected. All SpikeEventSeries should reside in a module (under EventWaveform interface) even if the spikes were reported and stored by hardware. All events span the same recording channels and store snapshots of equal duration. TimeSeries::data array structure: [num events] [num channels] [num samples] (or [num events] [num samples] for single electrode).
|
||||||
|
@ -259,15 +290,17 @@ class SpikeEventSeries(ElectricalSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: Union[
|
data: SpikeEventSeriesData = Field(..., description="""Spike waveforms.""")
|
||||||
NDArray[Shape["* num_events, * num_samples"], float],
|
|
||||||
NDArray[Shape["* num_events, * num_channels, * num_samples"], float],
|
|
||||||
] = Field(..., description="""Spike waveforms.""")
|
|
||||||
timestamps: NDArray[Shape["* num_times"], float] = Field(
|
timestamps: NDArray[Shape["* num_times"], float] = Field(
|
||||||
...,
|
...,
|
||||||
description="""Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. Timestamps are required for the events. Unlike for TimeSeries, timestamps are required for SpikeEventSeries and are thus re-specified here.""",
|
description="""Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. Timestamps are required for the events. Unlike for TimeSeries, timestamps are required for SpikeEventSeries and are thus re-specified here.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
||||||
)
|
)
|
||||||
|
channel_conversion: Optional[NDArray[Shape["* num_channels"], float]] = Field(
|
||||||
|
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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_channels"}]}}},
|
||||||
|
)
|
||||||
electrodes: Named[DynamicTableRegion] = Field(
|
electrodes: Named[DynamicTableRegion] = Field(
|
||||||
...,
|
...,
|
||||||
description="""DynamicTableRegion pointer to the electrodes that this time series was generated from.""",
|
description="""DynamicTableRegion pointer to the electrodes that this time series was generated from.""",
|
||||||
|
@ -280,11 +313,6 @@ class SpikeEventSeries(ElectricalSeries):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
channel_conversion: Optional[NDArray[Shape["* num_channels"], float]] = Field(
|
|
||||||
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.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_channels"}]}}},
|
|
||||||
)
|
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
description="""Description of the time series.""",
|
description="""Description of the time series.""",
|
||||||
|
@ -317,6 +345,40 @@ class SpikeEventSeries(ElectricalSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class SpikeEventSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Spike waveforms.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.ecephys"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["volts"] = Field(
|
||||||
|
"volts",
|
||||||
|
description="""Unit of measurement for waveforms, which is fixed to 'volts'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
|
)
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* num_events, * num_samples"], float | int],
|
||||||
|
NDArray[Shape["* num_events, * num_channels, * num_samples"], float | int],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class FeatureExtraction(NWBDataInterface):
|
class FeatureExtraction(NWBDataInterface):
|
||||||
"""
|
"""
|
||||||
Features, such as PC1 and PC2, that are extracted from signals stored in a SpikeEventSeries or other source.
|
Features, such as PC1 and PC2, that are extracted from signals stored in a SpikeEventSeries or other source.
|
||||||
|
@ -415,10 +477,12 @@ class EventWaveform(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[SpikeEventSeries]] = Field(
|
name: str = Field(
|
||||||
|
"EventWaveform", json_schema_extra={"linkml_meta": {"ifabsent": "string(EventWaveform)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, SpikeEventSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpikeEventSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "SpikeEventSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class FilteredEphys(NWBDataInterface):
|
class FilteredEphys(NWBDataInterface):
|
||||||
|
@ -430,10 +494,12 @@ class FilteredEphys(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[ElectricalSeries]] = Field(
|
name: str = Field(
|
||||||
|
"FilteredEphys", json_schema_extra={"linkml_meta": {"ifabsent": "string(FilteredEphys)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, ElectricalSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "ElectricalSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "ElectricalSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class LFP(NWBDataInterface):
|
class LFP(NWBDataInterface):
|
||||||
|
@ -445,10 +511,10 @@ class LFP(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
{"from_schema": "core.nwb.ecephys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[ElectricalSeries]] = Field(
|
name: str = Field("LFP", json_schema_extra={"linkml_meta": {"ifabsent": "string(LFP)"}})
|
||||||
|
value: Optional[Dict[str, ElectricalSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "ElectricalSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "ElectricalSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class ElectrodeGroup(NWBContainer):
|
class ElectrodeGroup(NWBContainer):
|
||||||
|
@ -591,7 +657,9 @@ class Clustering(NWBDataInterface):
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
ElectricalSeries.model_rebuild()
|
ElectricalSeries.model_rebuild()
|
||||||
|
ElectricalSeriesData.model_rebuild()
|
||||||
SpikeEventSeries.model_rebuild()
|
SpikeEventSeries.model_rebuild()
|
||||||
|
SpikeEventSeriesData.model_rebuild()
|
||||||
FeatureExtraction.model_rebuild()
|
FeatureExtraction.model_rebuild()
|
||||||
EventDetection.model_rebuild()
|
EventDetection.model_rebuild()
|
||||||
EventWaveform.model_rebuild()
|
EventWaveform.model_rebuild()
|
||||||
|
|
|
@ -247,9 +247,6 @@ class TimeIntervals(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class TimeIntervalsTimeseries(VectorData):
|
class TimeIntervalsTimeseries(VectorData):
|
||||||
|
|
|
@ -225,28 +225,28 @@ class NWBFile(NWBContainer):
|
||||||
...,
|
...,
|
||||||
description="""Date and time corresponding to time zero of all timestamps. The date is stored in UTC with local timezone offset as ISO 8601 extended formatted string: 2018-09-28T14:43:54.123+02:00. Dates stored in UTC end in \"Z\" with no timezone offset. Date accuracy is up to milliseconds. All times stored in the file use this time as reference (i.e., time zero).""",
|
description="""Date and time corresponding to time zero of all timestamps. The date is stored in UTC with local timezone offset as ISO 8601 extended formatted string: 2018-09-28T14:43:54.123+02:00. Dates stored in UTC end in \"Z\" with no timezone offset. Date accuracy is up to milliseconds. All times stored in the file use this time as reference (i.e., time zero).""",
|
||||||
)
|
)
|
||||||
acquisition: Optional[List[Union[DynamicTable, NWBDataInterface]]] = Field(
|
acquisition: Optional[Dict[str, Union[DynamicTable, NWBDataInterface]]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Data streams recorded from the system, including ephys, ophys, tracking, etc. This group should be read-only after the experiment is completed and timestamps are corrected to a common timebase. The data stored here may be links to raw data stored in external NWB files. This will allow keeping bulky raw data out of the file while preserving the option of keeping some/all in the file. Acquired data includes tracking and experimental data streams (i.e., everything measured from the system). If bulky data is stored in the /acquisition group, the data can exist in a separate NWB file that is linked to by the file being used for processing and analysis.""",
|
description="""Data streams recorded from the system, including ephys, ophys, tracking, etc. This group should be read-only after the experiment is completed and timestamps are corrected to a common timebase. The data stored here may be links to raw data stored in external NWB files. This will allow keeping bulky raw data out of the file while preserving the option of keeping some/all in the file. Acquired data includes tracking and experimental data streams (i.e., everything measured from the system). If bulky data is stored in the /acquisition group, the data can exist in a separate NWB file that is linked to by the file being used for processing and analysis.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}, {"range": "DynamicTable"}]}
|
"linkml_meta": {"any_of": [{"range": "NWBDataInterface"}, {"range": "DynamicTable"}]}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
analysis: Optional[List[Union[DynamicTable, NWBContainer]]] = Field(
|
analysis: Optional[Dict[str, Union[DynamicTable, NWBContainer]]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Lab-specific and custom scientific analysis of data. There is no defined format for the content of this group - the format is up to the individual user/lab. To facilitate sharing analysis data between labs, the contents here should be stored in standard types (e.g., neurodata_types) and appropriately documented. The file can store lab-specific and custom data analysis without restriction on its form or schema, reducing data formatting restrictions on end users. Such data should be placed in the analysis group. The analysis data should be documented so that it could be shared with other labs.""",
|
description="""Lab-specific and custom scientific analysis of data. There is no defined format for the content of this group - the format is up to the individual user/lab. To facilitate sharing analysis data between labs, the contents here should be stored in standard types (e.g., neurodata_types) and appropriately documented. The file can store lab-specific and custom data analysis without restriction on its form or schema, reducing data formatting restrictions on end users. Such data should be placed in the analysis group. The analysis data should be documented so that it could be shared with other labs.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"any_of": [{"range": "NWBContainer"}, {"range": "DynamicTable"}]}
|
"linkml_meta": {"any_of": [{"range": "NWBContainer"}, {"range": "DynamicTable"}]}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
scratch: Optional[List[Union[DynamicTable, NWBContainer]]] = Field(
|
scratch: Optional[Dict[str, Union[DynamicTable, NWBContainer]]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""A place to store one-off analysis results. Data placed here is not intended for sharing. By placing data here, users acknowledge that there is no guarantee that their data meets any standard.""",
|
description="""A place to store one-off analysis results. Data placed here is not intended for sharing. By placing data here, users acknowledge that there is no guarantee that their data meets any standard.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"any_of": [{"range": "NWBContainer"}, {"range": "DynamicTable"}]}
|
"linkml_meta": {"any_of": [{"range": "NWBContainer"}, {"range": "DynamicTable"}]}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
processing: Optional[List[ProcessingModule]] = Field(
|
processing: Optional[Dict[str, ProcessingModule]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""The home for ProcessingModules. These modules perform intermediate analysis of data that is necessary to perform before scientific analysis. Examples include spike clustering, extracting position from tracking data, stitching together image slices. ProcessingModules can be large and express many data sets from relatively complex analysis (e.g., spike detection and clustering) or small, representing extraction of position information from tracking video, or even binary lick/no-lick decisions. Common software tools (e.g., klustakwik, MClust) are expected to read/write data here. 'Processing' refers to intermediate analysis of the acquired data to make it more amenable to scientific analysis.""",
|
description="""The home for ProcessingModules. These modules perform intermediate analysis of data that is necessary to perform before scientific analysis. Examples include spike clustering, extracting position from tracking data, stitching together image slices. ProcessingModules can be large and express many data sets from relatively complex analysis (e.g., spike detection and clustering) or small, representing extraction of position information from tracking video, or even binary lick/no-lick decisions. Common software tools (e.g., klustakwik, MClust) are expected to read/write data here. 'Processing' refers to intermediate analysis of the acquired data to make it more amenable to scientific analysis.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ProcessingModule"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ProcessingModule"}]}},
|
||||||
|
@ -264,6 +264,9 @@ class NWBFile(NWBContainer):
|
||||||
description="""Experimental intervals, whether that be logically distinct sub-experiments having a particular scientific goal, trials (see trials subgroup) during an experiment, or epochs (see epochs subgroup) deriving from analysis of data.""",
|
description="""Experimental intervals, whether that be logically distinct sub-experiments having a particular scientific goal, trials (see trials subgroup) during an experiment, or epochs (see epochs subgroup) deriving from analysis of data.""",
|
||||||
)
|
)
|
||||||
units: Optional[Units] = Field(None, description="""Data about sorted spike units.""")
|
units: Optional[Units] = Field(None, description="""Data about sorted spike units.""")
|
||||||
|
specifications: Optional[dict] = Field(
|
||||||
|
None, description="""Nested dictionary of schema specifications"""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class NWBFileStimulus(ConfiguredBaseModel):
|
class NWBFileStimulus(ConfiguredBaseModel):
|
||||||
|
@ -279,12 +282,12 @@ class NWBFileStimulus(ConfiguredBaseModel):
|
||||||
"linkml_meta": {"equals_string": "stimulus", "ifabsent": "string(stimulus)"}
|
"linkml_meta": {"equals_string": "stimulus", "ifabsent": "string(stimulus)"}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
presentation: Optional[List[TimeSeries]] = Field(
|
presentation: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Stimuli presented during the experiment.""",
|
description="""Stimuli presented during the experiment.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}},
|
||||||
)
|
)
|
||||||
templates: Optional[List[TimeSeries]] = Field(
|
templates: Optional[Dict[str, TimeSeries]] = Field(
|
||||||
None,
|
None,
|
||||||
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.""",
|
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.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "TimeSeries"}]}},
|
||||||
|
@ -362,11 +365,7 @@ class NWBFileGeneral(ConfiguredBaseModel):
|
||||||
None,
|
None,
|
||||||
description="""Information about virus(es) used in experiments, including virus ID, source, date made, injection location, volume, etc.""",
|
description="""Information about virus(es) used in experiments, including virus ID, source, date made, injection location, volume, etc.""",
|
||||||
)
|
)
|
||||||
lab_meta_data: Optional[List[LabMetaData]] = Field(
|
devices: Optional[Dict[str, Device]] = Field(
|
||||||
None,
|
|
||||||
description="""Place-holder than can be extended so that lab-specific meta-data can be placed in /general.""",
|
|
||||||
)
|
|
||||||
devices: Optional[List[Device]] = Field(
|
|
||||||
None,
|
None,
|
||||||
description="""Description of hardware devices used during experiment, e.g., monitors, ADC boards, microscopes, etc.""",
|
description="""Description of hardware devices used during experiment, e.g., monitors, ADC boards, microscopes, etc.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "Device"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "Device"}]}},
|
||||||
|
@ -381,16 +380,20 @@ class NWBFileGeneral(ConfiguredBaseModel):
|
||||||
intracellular_ephys: Optional[GeneralIntracellularEphys] = Field(
|
intracellular_ephys: Optional[GeneralIntracellularEphys] = Field(
|
||||||
None, description="""Metadata related to intracellular electrophysiology."""
|
None, description="""Metadata related to intracellular electrophysiology."""
|
||||||
)
|
)
|
||||||
optogenetics: Optional[List[OptogeneticStimulusSite]] = Field(
|
optogenetics: Optional[Dict[str, OptogeneticStimulusSite]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Metadata describing optogenetic stimuluation.""",
|
description="""Metadata describing optogenetic stimuluation.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "OptogeneticStimulusSite"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "OptogeneticStimulusSite"}]}},
|
||||||
)
|
)
|
||||||
optophysiology: Optional[List[ImagingPlane]] = Field(
|
optophysiology: Optional[Dict[str, ImagingPlane]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Metadata related to optophysiology.""",
|
description="""Metadata related to optophysiology.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ImagingPlane"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ImagingPlane"}]}},
|
||||||
)
|
)
|
||||||
|
value: Optional[Dict[str, LabMetaData]] = Field(
|
||||||
|
None,
|
||||||
|
description="""Place-holder than can be extended so that lab-specific meta-data can be placed in /general.""",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class GeneralSourceScript(ConfiguredBaseModel):
|
class GeneralSourceScript(ConfiguredBaseModel):
|
||||||
|
@ -426,12 +429,12 @@ class GeneralExtracellularEphys(ConfiguredBaseModel):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
electrode_group: Optional[List[ElectrodeGroup]] = Field(
|
|
||||||
None, description="""Physical group of electrodes."""
|
|
||||||
)
|
|
||||||
electrodes: Optional[ExtracellularEphysElectrodes] = Field(
|
electrodes: Optional[ExtracellularEphysElectrodes] = Field(
|
||||||
None, description="""A table of all electrodes (i.e. channels) used for recording."""
|
None, description="""A table of all electrodes (i.e. channels) used for recording."""
|
||||||
)
|
)
|
||||||
|
value: Optional[Dict[str, ElectrodeGroup]] = Field(
|
||||||
|
None, description="""Physical group of electrodes."""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ExtracellularEphysElectrodes(DynamicTable):
|
class ExtracellularEphysElectrodes(DynamicTable):
|
||||||
|
@ -501,8 +504,14 @@ class ExtracellularEphysElectrodes(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
group: List[ElectrodeGroup] = Field(
|
group: VectorData[NDArray[Any, ElectrodeGroup]] = Field(
|
||||||
..., description="""Reference to the ElectrodeGroup this electrode is a part of."""
|
...,
|
||||||
|
description="""Reference to the ElectrodeGroup this electrode is a part of.""",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {
|
||||||
|
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
||||||
|
}
|
||||||
|
},
|
||||||
)
|
)
|
||||||
group_name: VectorData[NDArray[Any, str]] = Field(
|
group_name: VectorData[NDArray[Any, str]] = Field(
|
||||||
...,
|
...,
|
||||||
|
@ -559,9 +568,6 @@ class ExtracellularEphysElectrodes(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class GeneralIntracellularEphys(ConfiguredBaseModel):
|
class GeneralIntracellularEphys(ConfiguredBaseModel):
|
||||||
|
@ -584,12 +590,12 @@ class GeneralIntracellularEphys(ConfiguredBaseModel):
|
||||||
None,
|
None,
|
||||||
description="""Description of filtering used. Includes filtering type and parameters, frequency fall-off, etc. If this changes between TimeSeries, filter description should be stored as a text attribute for each TimeSeries.""",
|
description="""Description of filtering used. Includes filtering type and parameters, frequency fall-off, etc. If this changes between TimeSeries, filter description should be stored as a text attribute for each TimeSeries.""",
|
||||||
)
|
)
|
||||||
intracellular_electrode: Optional[List[IntracellularElectrode]] = Field(
|
|
||||||
None, description="""An intracellular electrode."""
|
|
||||||
)
|
|
||||||
sweep_table: Optional[SweepTable] = Field(
|
sweep_table: Optional[SweepTable] = Field(
|
||||||
None, description="""The table which groups different PatchClampSeries together."""
|
None, description="""The table which groups different PatchClampSeries together."""
|
||||||
)
|
)
|
||||||
|
value: Optional[Dict[str, IntracellularElectrode]] = Field(
|
||||||
|
None, description="""An intracellular electrode."""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class NWBFileIntervals(ConfiguredBaseModel):
|
class NWBFileIntervals(ConfiguredBaseModel):
|
||||||
|
@ -615,7 +621,7 @@ class NWBFileIntervals(ConfiguredBaseModel):
|
||||||
invalid_times: Optional[TimeIntervals] = Field(
|
invalid_times: Optional[TimeIntervals] = Field(
|
||||||
None, description="""Time intervals that should be removed from analysis."""
|
None, description="""Time intervals that should be removed from analysis."""
|
||||||
)
|
)
|
||||||
time_intervals: Optional[List[TimeIntervals]] = Field(
|
value: Optional[Dict[str, TimeIntervals]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Optional additional table(s) for describing other experimental time intervals.""",
|
description="""Optional additional table(s) for describing other experimental time intervals.""",
|
||||||
)
|
)
|
||||||
|
|
|
@ -262,11 +262,21 @@ class PatchClampSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: str = Field(
|
unit: str = Field(
|
||||||
...,
|
...,
|
||||||
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'.""",
|
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'.""",
|
||||||
)
|
)
|
||||||
value: Optional[NDArray[Shape["* num_times"], float]] = Field(
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -281,12 +291,12 @@ class CurrentClampSeries(PatchClampSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: CurrentClampSeriesData = Field(..., description="""Recorded voltage.""")
|
|
||||||
bias_current: Optional[float] = Field(None, description="""Bias current, in amps.""")
|
bias_current: Optional[float] = Field(None, description="""Bias current, in amps.""")
|
||||||
bridge_balance: Optional[float] = Field(None, description="""Bridge balance, in ohms.""")
|
bridge_balance: Optional[float] = Field(None, description="""Bridge balance, in ohms.""")
|
||||||
capacitance_compensation: Optional[float] = Field(
|
capacitance_compensation: Optional[float] = Field(
|
||||||
None, description="""Capacitance compensation, in farads."""
|
None, description="""Capacitance compensation, in farads."""
|
||||||
)
|
)
|
||||||
|
data: CurrentClampSeriesData = Field(..., description="""Recorded voltage.""")
|
||||||
stimulus_description: str = Field(
|
stimulus_description: str = Field(
|
||||||
..., description="""Protocol/stimulus name for this patch-clamp dataset."""
|
..., description="""Protocol/stimulus name for this patch-clamp dataset."""
|
||||||
)
|
)
|
||||||
|
@ -354,12 +364,24 @@ class CurrentClampSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Literal["volts"] = Field(
|
unit: Literal["volts"] = Field(
|
||||||
"volts",
|
"volts",
|
||||||
description="""Base unit of measurement for working with the data. which is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
description="""Base unit of measurement for working with the data. which is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
)
|
)
|
||||||
value: Any = Field(...)
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class IZeroClampSeries(CurrentClampSeries):
|
class IZeroClampSeries(CurrentClampSeries):
|
||||||
|
@ -512,6 +534,16 @@ class CurrentClampStimulusSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Literal["amperes"] = Field(
|
unit: Literal["amperes"] = Field(
|
||||||
"amperes",
|
"amperes",
|
||||||
description="""Base unit of measurement for working with the data. which is fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
description="""Base unit of measurement for working with the data. which is fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
|
@ -519,7 +551,9 @@ class CurrentClampStimulusSeriesData(ConfiguredBaseModel):
|
||||||
"linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"}
|
"linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
value: Any = Field(...)
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class VoltageClampSeries(PatchClampSeries):
|
class VoltageClampSeries(PatchClampSeries):
|
||||||
|
@ -532,13 +566,13 @@ class VoltageClampSeries(PatchClampSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: VoltageClampSeriesData = Field(..., description="""Recorded current.""")
|
|
||||||
capacitance_fast: Optional[VoltageClampSeriesCapacitanceFast] = Field(
|
capacitance_fast: Optional[VoltageClampSeriesCapacitanceFast] = Field(
|
||||||
None, description="""Fast capacitance, in farads."""
|
None, description="""Fast capacitance, in farads."""
|
||||||
)
|
)
|
||||||
capacitance_slow: Optional[VoltageClampSeriesCapacitanceSlow] = Field(
|
capacitance_slow: Optional[VoltageClampSeriesCapacitanceSlow] = Field(
|
||||||
None, description="""Slow capacitance, in farads."""
|
None, description="""Slow capacitance, in farads."""
|
||||||
)
|
)
|
||||||
|
data: VoltageClampSeriesData = Field(..., description="""Recorded current.""")
|
||||||
resistance_comp_bandwidth: Optional[VoltageClampSeriesResistanceCompBandwidth] = Field(
|
resistance_comp_bandwidth: Optional[VoltageClampSeriesResistanceCompBandwidth] = Field(
|
||||||
None, description="""Resistance compensation bandwidth, in hertz."""
|
None, description="""Resistance compensation bandwidth, in hertz."""
|
||||||
)
|
)
|
||||||
|
@ -610,27 +644,6 @@ class VoltageClampSeries(PatchClampSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class VoltageClampSeriesData(ConfiguredBaseModel):
|
|
||||||
"""
|
|
||||||
Recorded current.
|
|
||||||
"""
|
|
||||||
|
|
||||||
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.icephys"})
|
|
||||||
|
|
||||||
name: Literal["data"] = Field(
|
|
||||||
"data",
|
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
|
||||||
)
|
|
||||||
unit: Literal["amperes"] = Field(
|
|
||||||
"amperes",
|
|
||||||
description="""Base unit of measurement for working with the data. which is fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
|
||||||
json_schema_extra={
|
|
||||||
"linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"}
|
|
||||||
},
|
|
||||||
)
|
|
||||||
value: Any = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class VoltageClampSeriesCapacitanceFast(ConfiguredBaseModel):
|
class VoltageClampSeriesCapacitanceFast(ConfiguredBaseModel):
|
||||||
"""
|
"""
|
||||||
Fast capacitance, in farads.
|
Fast capacitance, in farads.
|
||||||
|
@ -683,6 +696,39 @@ class VoltageClampSeriesCapacitanceSlow(ConfiguredBaseModel):
|
||||||
value: float = Field(...)
|
value: float = Field(...)
|
||||||
|
|
||||||
|
|
||||||
|
class VoltageClampSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Recorded current.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.icephys"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["amperes"] = Field(
|
||||||
|
"amperes",
|
||||||
|
description="""Base unit of measurement for working with the data. which is fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class VoltageClampSeriesResistanceCompBandwidth(ConfiguredBaseModel):
|
class VoltageClampSeriesResistanceCompBandwidth(ConfiguredBaseModel):
|
||||||
"""
|
"""
|
||||||
Resistance compensation bandwidth, in hertz.
|
Resistance compensation bandwidth, in hertz.
|
||||||
|
@ -887,12 +933,24 @@ class VoltageClampStimulusSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Literal["volts"] = Field(
|
unit: Literal["volts"] = Field(
|
||||||
"volts",
|
"volts",
|
||||||
description="""Base unit of measurement for working with the data. which is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
description="""Base unit of measurement for working with the data. which is fixed to 'volts'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'.""",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
)
|
)
|
||||||
value: Any = Field(...)
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class IntracellularElectrode(NWBContainer):
|
class IntracellularElectrode(NWBContainer):
|
||||||
|
@ -942,18 +1000,15 @@ class SweepTable(DynamicTable):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
sweep_number: VectorData[NDArray[Any, int]] = Field(
|
series: VectorData[NDArray[Any, PatchClampSeries]] = Field(
|
||||||
...,
|
...,
|
||||||
description="""Sweep number of the PatchClampSeries in that row.""",
|
description="""The PatchClampSeries with the sweep number in that row.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
series: List[PatchClampSeries] = Field(
|
|
||||||
..., description="""The PatchClampSeries with the sweep number in that row."""
|
|
||||||
)
|
|
||||||
series_index: Named[VectorIndex] = Field(
|
series_index: Named[VectorIndex] = Field(
|
||||||
...,
|
...,
|
||||||
description="""Index for series.""",
|
description="""Index for series.""",
|
||||||
|
@ -966,6 +1021,15 @@ class SweepTable(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
sweep_number: VectorData[NDArray[Any, int]] = Field(
|
||||||
|
...,
|
||||||
|
description="""Sweep number of the PatchClampSeries in that row.""",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {
|
||||||
|
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
)
|
||||||
colnames: List[str] = Field(
|
colnames: List[str] = Field(
|
||||||
...,
|
...,
|
||||||
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
|
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
|
||||||
|
@ -976,9 +1040,6 @@ class SweepTable(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
|
@ -991,9 +1052,9 @@ IZeroClampSeries.model_rebuild()
|
||||||
CurrentClampStimulusSeries.model_rebuild()
|
CurrentClampStimulusSeries.model_rebuild()
|
||||||
CurrentClampStimulusSeriesData.model_rebuild()
|
CurrentClampStimulusSeriesData.model_rebuild()
|
||||||
VoltageClampSeries.model_rebuild()
|
VoltageClampSeries.model_rebuild()
|
||||||
VoltageClampSeriesData.model_rebuild()
|
|
||||||
VoltageClampSeriesCapacitanceFast.model_rebuild()
|
VoltageClampSeriesCapacitanceFast.model_rebuild()
|
||||||
VoltageClampSeriesCapacitanceSlow.model_rebuild()
|
VoltageClampSeriesCapacitanceSlow.model_rebuild()
|
||||||
|
VoltageClampSeriesData.model_rebuild()
|
||||||
VoltageClampSeriesResistanceCompBandwidth.model_rebuild()
|
VoltageClampSeriesResistanceCompBandwidth.model_rebuild()
|
||||||
VoltageClampSeriesResistanceCompCorrection.model_rebuild()
|
VoltageClampSeriesResistanceCompCorrection.model_rebuild()
|
||||||
VoltageClampSeriesResistanceCompPrediction.model_rebuild()
|
VoltageClampSeriesResistanceCompPrediction.model_rebuild()
|
||||||
|
|
|
@ -152,7 +152,7 @@ class GrayscaleImage(Image):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
value: Optional[NDArray[Shape["* x, * y"], float]] = Field(
|
value: Optional[NDArray[Shape["* x, * y"], float | int]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {"array": {"dimensions": [{"alias": "x"}, {"alias": "y"}]}}
|
"linkml_meta": {"array": {"dimensions": [{"alias": "x"}, {"alias": "y"}]}}
|
||||||
|
@ -174,7 +174,7 @@ class RGBImage(Image):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
value: Optional[NDArray[Shape["* x, * y, 3 r_g_b"], float]] = Field(
|
value: Optional[NDArray[Shape["* x, * y, 3 r_g_b"], float | int]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
|
@ -204,7 +204,7 @@ class RGBAImage(Image):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
value: Optional[NDArray[Shape["* x, * y, 4 r_g_b_a"], float]] = Field(
|
value: Optional[NDArray[Shape["* x, * y, 4 r_g_b_a"], float | int]] = Field(
|
||||||
None,
|
None,
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
|
@ -234,12 +234,9 @@ class ImageSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: Optional[
|
data: Optional[ImageSeriesData] = Field(
|
||||||
Union[
|
None, description="""Binary data representing images across frames."""
|
||||||
NDArray[Shape["* frame, * x, * y"], float],
|
)
|
||||||
NDArray[Shape["* frame, * x, * y, * z"], float],
|
|
||||||
]
|
|
||||||
] = Field(None, description="""Binary data representing images across frames.""")
|
|
||||||
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Number of pixels on x, y, (and z) axes.""",
|
description="""Number of pixels on x, y, (and z) axes.""",
|
||||||
|
@ -250,8 +247,9 @@ class ImageSeries(TimeSeries):
|
||||||
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
||||||
)
|
)
|
||||||
format: Optional[str] = Field(
|
format: Optional[str] = Field(
|
||||||
None,
|
"raw",
|
||||||
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="""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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(raw)"}},
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -290,6 +288,39 @@ class ImageSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class ImageSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Binary data representing images across frames.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.image"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: str = Field(
|
||||||
|
...,
|
||||||
|
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'.""",
|
||||||
|
)
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* frame, * x, * y"], float | int],
|
||||||
|
NDArray[Shape["* frame, * x, * y, * z"], float | int],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class ImageSeriesExternalFile(ConfiguredBaseModel):
|
class ImageSeriesExternalFile(ConfiguredBaseModel):
|
||||||
"""
|
"""
|
||||||
Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.
|
Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.
|
||||||
|
@ -331,12 +362,9 @@ class ImageMaskSeries(ImageSeries):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
data: Optional[
|
data: Optional[ImageSeriesData] = Field(
|
||||||
Union[
|
None, description="""Binary data representing images across frames."""
|
||||||
NDArray[Shape["* frame, * x, * y"], float],
|
)
|
||||||
NDArray[Shape["* frame, * x, * y, * z"], float],
|
|
||||||
]
|
|
||||||
] = Field(None, description="""Binary data representing images across frames.""")
|
|
||||||
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Number of pixels on x, y, (and z) axes.""",
|
description="""Number of pixels on x, y, (and z) axes.""",
|
||||||
|
@ -347,8 +375,9 @@ class ImageMaskSeries(ImageSeries):
|
||||||
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
||||||
)
|
)
|
||||||
format: Optional[str] = Field(
|
format: Optional[str] = Field(
|
||||||
None,
|
"raw",
|
||||||
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="""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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(raw)"}},
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -397,6 +426,9 @@ class OpticalSeries(ImageSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
|
data: OpticalSeriesData = Field(
|
||||||
|
..., description="""Images presented to subject, either grayscale or RGB"""
|
||||||
|
)
|
||||||
distance: Optional[float] = Field(
|
distance: Optional[float] = Field(
|
||||||
None, description="""Distance from camera/monitor to target/eye."""
|
None, description="""Distance from camera/monitor to target/eye."""
|
||||||
)
|
)
|
||||||
|
@ -405,10 +437,6 @@ class OpticalSeries(ImageSeries):
|
||||||
NDArray[Shape["2 width_height"], float], NDArray[Shape["3 width_height_depth"], float]
|
NDArray[Shape["2 width_height"], float], NDArray[Shape["3 width_height_depth"], float]
|
||||||
]
|
]
|
||||||
] = Field(None, description="""Width, height and depth of image, or imaged area, in meters.""")
|
] = Field(None, description="""Width, height and depth of image, or imaged area, in meters.""")
|
||||||
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""")
|
|
||||||
orientation: Optional[str] = Field(
|
orientation: Optional[str] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Description of image relative to some reference frame (e.g., which way is up). Must also specify frame of reference.""",
|
description="""Description of image relative to some reference frame (e.g., which way is up). Must also specify frame of reference.""",
|
||||||
|
@ -423,8 +451,9 @@ class OpticalSeries(ImageSeries):
|
||||||
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
||||||
)
|
)
|
||||||
format: Optional[str] = Field(
|
format: Optional[str] = Field(
|
||||||
None,
|
"raw",
|
||||||
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="""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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(raw)"}},
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -463,6 +492,39 @@ class OpticalSeries(ImageSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class OpticalSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Images presented to subject, either grayscale or RGB
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.image"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: str = Field(
|
||||||
|
...,
|
||||||
|
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'.""",
|
||||||
|
)
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* frame, * x, * y"], float | int],
|
||||||
|
NDArray[Shape["* frame, * x, * y, 3 r_g_b"], float | int],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class IndexSeries(TimeSeries):
|
class IndexSeries(TimeSeries):
|
||||||
"""
|
"""
|
||||||
Stores indices to image frames stored in an ImageSeries. The purpose of the ImageIndexSeries is to allow a static image stack to be stored somewhere, and the images in the stack to be referenced out-of-order. This can be for the display of individual images, or of movie segments (as a movie is simply a series of images). The data field stores the index of the frame in the referenced ImageSeries, and the timestamps array indicates when that image was displayed.
|
Stores indices to image frames stored in an ImageSeries. The purpose of the ImageIndexSeries is to allow a static image stack to be stored somewhere, and the images in the stack to be referenced out-of-order. This can be for the display of individual images, or of movie segments (as a movie is simply a series of images). The data field stores the index of the frame in the referenced ImageSeries, and the timestamps array indicates when that image was displayed.
|
||||||
|
@ -473,10 +535,8 @@ class IndexSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: NDArray[Shape["* num_times"], int] = Field(
|
data: IndexSeriesData = Field(
|
||||||
...,
|
..., description="""Index of the frame in the referenced ImageSeries."""
|
||||||
description="""Index of the frame in the referenced ImageSeries.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
|
||||||
)
|
)
|
||||||
indexed_timeseries: Union[ImageSeries, str] = Field(
|
indexed_timeseries: Union[ImageSeries, str] = Field(
|
||||||
...,
|
...,
|
||||||
|
@ -524,13 +584,46 @@ class IndexSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class IndexSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Index of the frame in the referenced ImageSeries.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.image"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: str = Field(
|
||||||
|
...,
|
||||||
|
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'.""",
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
GrayscaleImage.model_rebuild()
|
GrayscaleImage.model_rebuild()
|
||||||
RGBImage.model_rebuild()
|
RGBImage.model_rebuild()
|
||||||
RGBAImage.model_rebuild()
|
RGBAImage.model_rebuild()
|
||||||
ImageSeries.model_rebuild()
|
ImageSeries.model_rebuild()
|
||||||
|
ImageSeriesData.model_rebuild()
|
||||||
ImageSeriesExternalFile.model_rebuild()
|
ImageSeriesExternalFile.model_rebuild()
|
||||||
ImageMaskSeries.model_rebuild()
|
ImageMaskSeries.model_rebuild()
|
||||||
OpticalSeries.model_rebuild()
|
OpticalSeries.model_rebuild()
|
||||||
|
OpticalSeriesData.model_rebuild()
|
||||||
IndexSeries.model_rebuild()
|
IndexSeries.model_rebuild()
|
||||||
|
IndexSeriesData.model_rebuild()
|
||||||
|
|
|
@ -251,6 +251,16 @@ class AbstractFeatureSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: Optional[str] = Field(
|
unit: Optional[str] = Field(
|
||||||
"see ",
|
"see ",
|
||||||
description="""Since there can be different units for different features, store the units in 'feature_units'. The default value for this attribute is \"see 'feature_units'\".""",
|
description="""Since there can be different units for different features, store the units in 'feature_units'. The default value for this attribute is \"see 'feature_units'\".""",
|
||||||
|
@ -258,8 +268,8 @@ class AbstractFeatureSeriesData(ConfiguredBaseModel):
|
||||||
)
|
)
|
||||||
value: Optional[
|
value: Optional[
|
||||||
Union[
|
Union[
|
||||||
NDArray[Shape["* num_times"], float],
|
NDArray[Shape["* num_times"], float | int],
|
||||||
NDArray[Shape["* num_times, * num_features"], float],
|
NDArray[Shape["* num_times, * num_features"], float | int],
|
||||||
]
|
]
|
||||||
] = Field(None)
|
] = Field(None)
|
||||||
|
|
||||||
|
@ -274,10 +284,8 @@ class AnnotationSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: NDArray[Shape["* num_times"], str] = Field(
|
data: AnnotationSeriesData = Field(
|
||||||
...,
|
..., description="""Annotations made during an experiment."""
|
||||||
description="""Annotations made during an experiment.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -316,6 +324,39 @@ class AnnotationSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class AnnotationSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Annotations made during an experiment.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.misc"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: float = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data. Annotations have no units, so the value is fixed to -1.0.""",
|
||||||
|
le=-1,
|
||||||
|
ge=-1,
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["n/a"] = Field(
|
||||||
|
"n/a",
|
||||||
|
description="""Base unit of measurement for working with the data. Annotations have no units, so the value is fixed to 'n/a'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "n/a", "ifabsent": "string(n/a)"}},
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], str]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class IntervalSeries(TimeSeries):
|
class IntervalSeries(TimeSeries):
|
||||||
"""
|
"""
|
||||||
Stores intervals of data. The timestamps field stores the beginning and end of intervals. The data field stores whether the interval just started (>0 value) or ended (<0 value). Different interval types can be represented in the same series by using multiple key values (eg, 1 for feature A, 2 for feature B, 3 for feature C, etc). The field data stores an 8-bit integer. This is largely an alias of a standard TimeSeries but that is identifiable as representing time intervals in a machine-readable way.
|
Stores intervals of data. The timestamps field stores the beginning and end of intervals. The data field stores whether the interval just started (>0 value) or ended (<0 value). Different interval types can be represented in the same series by using multiple key values (eg, 1 for feature A, 2 for feature B, 3 for feature C, etc). The field data stores an 8-bit integer. This is largely an alias of a standard TimeSeries but that is identifiable as representing time intervals in a machine-readable way.
|
||||||
|
@ -326,10 +367,8 @@ class IntervalSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: NDArray[Shape["* num_times"], int] = Field(
|
data: IntervalSeriesData = Field(
|
||||||
...,
|
..., description="""Use values >0 if interval started, <0 if interval ended."""
|
||||||
description="""Use values >0 if interval started, <0 if interval ended.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -368,6 +407,39 @@ class IntervalSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class IntervalSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Use values >0 if interval started, <0 if interval ended.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.misc"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: float = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data. Annotations have no units, so the value is fixed to -1.0.""",
|
||||||
|
le=-1,
|
||||||
|
ge=-1,
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["n/a"] = Field(
|
||||||
|
"n/a",
|
||||||
|
description="""Base unit of measurement for working with the data. Annotations have no units, so the value is fixed to 'n/a'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "n/a", "ifabsent": "string(n/a)"}},
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class DecompositionSeries(TimeSeries):
|
class DecompositionSeries(TimeSeries):
|
||||||
"""
|
"""
|
||||||
Spectral analysis of a time series, e.g. of an LFP or a speech signal.
|
Spectral analysis of a time series, e.g. of an LFP or a speech signal.
|
||||||
|
@ -443,24 +515,36 @@ class DecompositionSeriesData(ConfiguredBaseModel):
|
||||||
"data",
|
"data",
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
)
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
unit: str = Field(
|
unit: str = Field(
|
||||||
"no unit",
|
"no unit",
|
||||||
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'.""",
|
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'.""",
|
||||||
json_schema_extra={"linkml_meta": {"ifabsent": "string(no unit)"}},
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(no unit)"}},
|
||||||
)
|
)
|
||||||
value: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float]] = Field(
|
value: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float | int]] = (
|
||||||
None,
|
Field(
|
||||||
json_schema_extra={
|
None,
|
||||||
"linkml_meta": {
|
json_schema_extra={
|
||||||
"array": {
|
"linkml_meta": {
|
||||||
"dimensions": [
|
"array": {
|
||||||
{"alias": "num_times"},
|
"dimensions": [
|
||||||
{"alias": "num_channels"},
|
{"alias": "num_times"},
|
||||||
{"alias": "num_bands"},
|
{"alias": "num_channels"},
|
||||||
]
|
{"alias": "num_bands"},
|
||||||
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
},
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -518,9 +602,6 @@ class DecompositionSeriesBands(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class Units(DynamicTable):
|
class Units(DynamicTable):
|
||||||
|
@ -533,9 +614,18 @@ class Units(DynamicTable):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field("Units", json_schema_extra={"linkml_meta": {"ifabsent": "string(Units)"}})
|
name: str = Field("Units", json_schema_extra={"linkml_meta": {"ifabsent": "string(Units)"}})
|
||||||
spike_times_index: Optional[Named[VectorIndex]] = Field(
|
electrode_group: Optional[VectorData[NDArray[Any, ElectrodeGroup]]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Index into the spike_times dataset.""",
|
description="""Electrode group that each spike unit came from.""",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {
|
||||||
|
"array": {"maximum_number_dimensions": False, "minimum_number_dimensions": 1}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
electrodes: Optional[Named[DynamicTableRegion]] = Field(
|
||||||
|
None,
|
||||||
|
description="""Electrode that each spike unit came from, specified using a DynamicTableRegion.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"annotations": {
|
"annotations": {
|
||||||
|
@ -545,12 +635,9 @@ class Units(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
spike_times: Optional[UnitsSpikeTimes] = Field(
|
electrodes_index: Optional[Named[VectorIndex]] = Field(
|
||||||
None, description="""Spike times for each unit."""
|
|
||||||
)
|
|
||||||
obs_intervals_index: Optional[Named[VectorIndex]] = Field(
|
|
||||||
None,
|
None,
|
||||||
description="""Index into the obs_intervals dataset.""",
|
description="""Index into electrodes.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"annotations": {
|
"annotations": {
|
||||||
|
@ -576,9 +663,9 @@ class Units(DynamicTable):
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
electrodes_index: Optional[Named[VectorIndex]] = Field(
|
obs_intervals_index: Optional[Named[VectorIndex]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Index into electrodes.""",
|
description="""Index into the obs_intervals dataset.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"annotations": {
|
"annotations": {
|
||||||
|
@ -588,9 +675,12 @@ class Units(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
electrodes: Optional[Named[DynamicTableRegion]] = Field(
|
spike_times: Optional[UnitsSpikeTimes] = Field(
|
||||||
|
None, description="""Spike times for each unit."""
|
||||||
|
)
|
||||||
|
spike_times_index: Optional[Named[VectorIndex]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Electrode that each spike unit came from, specified using a DynamicTableRegion.""",
|
description="""Index into the spike_times dataset.""",
|
||||||
json_schema_extra={
|
json_schema_extra={
|
||||||
"linkml_meta": {
|
"linkml_meta": {
|
||||||
"annotations": {
|
"annotations": {
|
||||||
|
@ -600,25 +690,12 @@ class Units(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
electrode_group: Optional[List[ElectrodeGroup]] = Field(
|
waveform_mean: Optional[UnitsWaveformMean] = Field(
|
||||||
None, description="""Electrode group that each spike unit came from."""
|
None, description="""Spike waveform mean for each spike unit."""
|
||||||
|
)
|
||||||
|
waveform_sd: Optional[UnitsWaveformSd] = Field(
|
||||||
|
None, description="""Spike waveform standard deviation for each spike unit."""
|
||||||
)
|
)
|
||||||
waveform_mean: Optional[
|
|
||||||
VectorData[
|
|
||||||
Union[
|
|
||||||
NDArray[Shape["* num_units, * num_samples"], float],
|
|
||||||
NDArray[Shape["* num_units, * num_samples, * num_electrodes"], float],
|
|
||||||
]
|
|
||||||
]
|
|
||||||
] = Field(None, description="""Spike waveform mean for each spike unit.""")
|
|
||||||
waveform_sd: Optional[
|
|
||||||
VectorData[
|
|
||||||
Union[
|
|
||||||
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.""")
|
|
||||||
colnames: List[str] = Field(
|
colnames: List[str] = Field(
|
||||||
...,
|
...,
|
||||||
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
|
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
|
||||||
|
@ -629,9 +706,6 @@ class Units(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class UnitsSpikeTimes(VectorData):
|
class UnitsSpikeTimes(VectorData):
|
||||||
|
@ -662,14 +736,78 @@ class UnitsSpikeTimes(VectorData):
|
||||||
] = Field(None)
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
|
class UnitsWaveformMean(VectorData):
|
||||||
|
"""
|
||||||
|
Spike waveform mean for each spike unit.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.misc"})
|
||||||
|
|
||||||
|
name: Literal["waveform_mean"] = Field(
|
||||||
|
"waveform_mean",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {"equals_string": "waveform_mean", "ifabsent": "string(waveform_mean)"}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
sampling_rate: Optional[float] = Field(None, description="""Sampling rate, in hertz.""")
|
||||||
|
unit: Optional[Literal["volts"]] = Field(
|
||||||
|
"volts",
|
||||||
|
description="""Unit of measurement. This value is fixed to 'volts'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
|
)
|
||||||
|
description: str = Field(..., description="""Description of what these vectors represent.""")
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* dim0"], Any],
|
||||||
|
NDArray[Shape["* dim0, * dim1"], Any],
|
||||||
|
NDArray[Shape["* dim0, * dim1, * dim2"], Any],
|
||||||
|
NDArray[Shape["* dim0, * dim1, * dim2, * dim3"], Any],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
|
class UnitsWaveformSd(VectorData):
|
||||||
|
"""
|
||||||
|
Spike waveform standard deviation for each spike unit.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.misc"})
|
||||||
|
|
||||||
|
name: Literal["waveform_sd"] = Field(
|
||||||
|
"waveform_sd",
|
||||||
|
json_schema_extra={
|
||||||
|
"linkml_meta": {"equals_string": "waveform_sd", "ifabsent": "string(waveform_sd)"}
|
||||||
|
},
|
||||||
|
)
|
||||||
|
sampling_rate: Optional[float] = Field(None, description="""Sampling rate, in hertz.""")
|
||||||
|
unit: Optional[Literal["volts"]] = Field(
|
||||||
|
"volts",
|
||||||
|
description="""Unit of measurement. This value is fixed to 'volts'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}},
|
||||||
|
)
|
||||||
|
description: str = Field(..., description="""Description of what these vectors represent.""")
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* dim0"], Any],
|
||||||
|
NDArray[Shape["* dim0, * dim1"], Any],
|
||||||
|
NDArray[Shape["* dim0, * dim1, * dim2"], Any],
|
||||||
|
NDArray[Shape["* dim0, * dim1, * dim2, * dim3"], Any],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
AbstractFeatureSeries.model_rebuild()
|
AbstractFeatureSeries.model_rebuild()
|
||||||
AbstractFeatureSeriesData.model_rebuild()
|
AbstractFeatureSeriesData.model_rebuild()
|
||||||
AnnotationSeries.model_rebuild()
|
AnnotationSeries.model_rebuild()
|
||||||
|
AnnotationSeriesData.model_rebuild()
|
||||||
IntervalSeries.model_rebuild()
|
IntervalSeries.model_rebuild()
|
||||||
|
IntervalSeriesData.model_rebuild()
|
||||||
DecompositionSeries.model_rebuild()
|
DecompositionSeries.model_rebuild()
|
||||||
DecompositionSeriesData.model_rebuild()
|
DecompositionSeriesData.model_rebuild()
|
||||||
DecompositionSeriesBands.model_rebuild()
|
DecompositionSeriesBands.model_rebuild()
|
||||||
Units.model_rebuild()
|
Units.model_rebuild()
|
||||||
UnitsSpikeTimes.model_rebuild()
|
UnitsSpikeTimes.model_rebuild()
|
||||||
|
UnitsWaveformMean.model_rebuild()
|
||||||
|
UnitsWaveformSd.model_rebuild()
|
||||||
|
|
|
@ -158,10 +158,8 @@ class OptogeneticSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: NDArray[Shape["* num_times"], float] = Field(
|
data: OptogeneticSeriesData = Field(
|
||||||
...,
|
..., description="""Applied power for optogenetic stimulus, in watts."""
|
||||||
description="""Applied power for optogenetic stimulus, in watts.""",
|
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}},
|
|
||||||
)
|
)
|
||||||
site: Union[OptogeneticStimulusSite, str] = Field(
|
site: Union[OptogeneticStimulusSite, str] = Field(
|
||||||
...,
|
...,
|
||||||
|
@ -209,6 +207,37 @@ class OptogeneticSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class OptogeneticSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Applied power for optogenetic stimulus, in watts.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.ogen"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: Literal["watts"] = Field(
|
||||||
|
"watts",
|
||||||
|
description="""Unit of measurement for data, which is fixed to 'watts'.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "watts", "ifabsent": "string(watts)"}},
|
||||||
|
)
|
||||||
|
value: Optional[NDArray[Shape["* num_times"], float | int]] = Field(
|
||||||
|
None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class OptogeneticStimulusSite(NWBContainer):
|
class OptogeneticStimulusSite(NWBContainer):
|
||||||
"""
|
"""
|
||||||
A site of optogenetic stimulation.
|
A site of optogenetic stimulation.
|
||||||
|
@ -239,4 +268,5 @@ class OptogeneticStimulusSite(NWBContainer):
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
OptogeneticSeries.model_rebuild()
|
OptogeneticSeries.model_rebuild()
|
||||||
|
OptogeneticSeriesData.model_rebuild()
|
||||||
OptogeneticStimulusSite.model_rebuild()
|
OptogeneticStimulusSite.model_rebuild()
|
||||||
|
|
|
@ -28,7 +28,7 @@ from ...core.v2_2_5.core_nwb_base import (
|
||||||
TimeSeriesSync,
|
TimeSeriesSync,
|
||||||
)
|
)
|
||||||
from ...core.v2_2_5.core_nwb_device import Device
|
from ...core.v2_2_5.core_nwb_device import Device
|
||||||
from ...core.v2_2_5.core_nwb_image import ImageSeries, ImageSeriesExternalFile
|
from ...core.v2_2_5.core_nwb_image import ImageSeries, ImageSeriesData, ImageSeriesExternalFile
|
||||||
from ...hdmf_common.v1_1_3.hdmf_common_table import (
|
from ...hdmf_common.v1_1_3.hdmf_common_table import (
|
||||||
DynamicTable,
|
DynamicTable,
|
||||||
DynamicTableRegion,
|
DynamicTableRegion,
|
||||||
|
@ -217,12 +217,9 @@ class TwoPhotonSeries(ImageSeries):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
data: Optional[
|
data: Optional[ImageSeriesData] = Field(
|
||||||
Union[
|
None, description="""Binary data representing images across frames."""
|
||||||
NDArray[Shape["* frame, * x, * y"], float],
|
)
|
||||||
NDArray[Shape["* frame, * x, * y, * z"], float],
|
|
||||||
]
|
|
||||||
] = Field(None, description="""Binary data representing images across frames.""")
|
|
||||||
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
dimension: Optional[NDArray[Shape["* rank"], int]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Number of pixels on x, y, (and z) axes.""",
|
description="""Number of pixels on x, y, (and z) axes.""",
|
||||||
|
@ -233,8 +230,9 @@ class TwoPhotonSeries(ImageSeries):
|
||||||
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
description="""Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in another NWB file and that file is linked to this file.""",
|
||||||
)
|
)
|
||||||
format: Optional[str] = Field(
|
format: Optional[str] = Field(
|
||||||
None,
|
"raw",
|
||||||
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="""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.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(raw)"}},
|
||||||
)
|
)
|
||||||
description: Optional[str] = Field(
|
description: Optional[str] = Field(
|
||||||
"no description",
|
"no description",
|
||||||
|
@ -283,9 +281,7 @@ class RoiResponseSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
data: Union[
|
data: RoiResponseSeriesData = Field(..., description="""Signals from ROIs.""")
|
||||||
NDArray[Shape["* num_times"], float], NDArray[Shape["* num_times, * num_rois"], float]
|
|
||||||
] = Field(..., description="""Signals from ROIs.""")
|
|
||||||
rois: Named[DynamicTableRegion] = Field(
|
rois: Named[DynamicTableRegion] = Field(
|
||||||
...,
|
...,
|
||||||
description="""DynamicTableRegion referencing into an ROITable containing information on the ROIs stored in this timeseries.""",
|
description="""DynamicTableRegion referencing into an ROITable containing information on the ROIs stored in this timeseries.""",
|
||||||
|
@ -335,6 +331,39 @@ class RoiResponseSeries(TimeSeries):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class RoiResponseSeriesData(ConfiguredBaseModel):
|
||||||
|
"""
|
||||||
|
Signals from ROIs.
|
||||||
|
"""
|
||||||
|
|
||||||
|
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.ophys"})
|
||||||
|
|
||||||
|
name: Literal["data"] = Field(
|
||||||
|
"data",
|
||||||
|
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
||||||
|
)
|
||||||
|
conversion: Optional[float] = Field(
|
||||||
|
1.0,
|
||||||
|
description="""Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}},
|
||||||
|
)
|
||||||
|
resolution: Optional[float] = Field(
|
||||||
|
-1.0,
|
||||||
|
description="""Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.""",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "float(-1.0)"}},
|
||||||
|
)
|
||||||
|
unit: str = Field(
|
||||||
|
...,
|
||||||
|
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'.""",
|
||||||
|
)
|
||||||
|
value: Optional[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* num_times"], float | int],
|
||||||
|
NDArray[Shape["* num_times, * num_rois"], float | int],
|
||||||
|
]
|
||||||
|
] = Field(None)
|
||||||
|
|
||||||
|
|
||||||
class DfOverF(NWBDataInterface):
|
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).
|
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).
|
||||||
|
@ -344,10 +373,10 @@ class DfOverF(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[RoiResponseSeries]] = Field(
|
name: str = Field("DfOverF", json_schema_extra={"linkml_meta": {"ifabsent": "string(DfOverF)"}})
|
||||||
|
value: Optional[Dict[str, RoiResponseSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "RoiResponseSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "RoiResponseSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class Fluorescence(NWBDataInterface):
|
class Fluorescence(NWBDataInterface):
|
||||||
|
@ -359,10 +388,12 @@ class Fluorescence(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[RoiResponseSeries]] = Field(
|
name: str = Field(
|
||||||
|
"Fluorescence", json_schema_extra={"linkml_meta": {"ifabsent": "string(Fluorescence)"}}
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, RoiResponseSeries]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "RoiResponseSeries"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "RoiResponseSeries"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class ImageSegmentation(NWBDataInterface):
|
class ImageSegmentation(NWBDataInterface):
|
||||||
|
@ -374,10 +405,13 @@ class ImageSegmentation(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[PlaneSegmentation]] = Field(
|
name: str = Field(
|
||||||
|
"ImageSegmentation",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(ImageSegmentation)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, PlaneSegmentation]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "PlaneSegmentation"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "PlaneSegmentation"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class PlaneSegmentation(DynamicTable):
|
class PlaneSegmentation(DynamicTable):
|
||||||
|
@ -390,10 +424,21 @@ class PlaneSegmentation(DynamicTable):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
image_mask: Optional[PlaneSegmentationImageMask] = Field(
|
image_mask: Optional[
|
||||||
|
VectorData[
|
||||||
|
Union[
|
||||||
|
NDArray[Shape["* num_roi, * num_x, * num_y"], Any],
|
||||||
|
NDArray[Shape["* num_roi, * num_x, * num_y, * num_z"], Any],
|
||||||
|
]
|
||||||
|
]
|
||||||
|
] = Field(
|
||||||
None,
|
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.""",
|
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: Optional[PlaneSegmentationPixelMask] = 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""",
|
||||||
|
)
|
||||||
pixel_mask_index: Optional[Named[VectorIndex]] = Field(
|
pixel_mask_index: Optional[Named[VectorIndex]] = Field(
|
||||||
None,
|
None,
|
||||||
description="""Index into pixel_mask.""",
|
description="""Index into pixel_mask.""",
|
||||||
|
@ -406,9 +451,9 @@ class PlaneSegmentation(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
pixel_mask: Optional[PlaneSegmentationPixelMask] = Field(
|
voxel_mask: Optional[PlaneSegmentationVoxelMask] = Field(
|
||||||
None,
|
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""",
|
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""",
|
||||||
)
|
)
|
||||||
voxel_mask_index: Optional[Named[VectorIndex]] = Field(
|
voxel_mask_index: Optional[Named[VectorIndex]] = Field(
|
||||||
None,
|
None,
|
||||||
|
@ -422,11 +467,7 @@ class PlaneSegmentation(DynamicTable):
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
voxel_mask: Optional[PlaneSegmentationVoxelMask] = Field(
|
reference_images: Optional[Dict[str, ImageSeries]] = 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""",
|
|
||||||
)
|
|
||||||
reference_images: Optional[List[ImageSeries]] = Field(
|
|
||||||
None,
|
None,
|
||||||
description="""Image stacks that the segmentation masks apply to.""",
|
description="""Image stacks that the segmentation masks apply to.""",
|
||||||
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ImageSeries"}]}},
|
json_schema_extra={"linkml_meta": {"any_of": [{"range": "ImageSeries"}]}},
|
||||||
|
@ -450,33 +491,6 @@ class PlaneSegmentation(DynamicTable):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class PlaneSegmentationImageMask(VectorData):
|
|
||||||
"""
|
|
||||||
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.
|
|
||||||
"""
|
|
||||||
|
|
||||||
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "core.nwb.ophys"})
|
|
||||||
|
|
||||||
name: Literal["image_mask"] = Field(
|
|
||||||
"image_mask",
|
|
||||||
json_schema_extra={
|
|
||||||
"linkml_meta": {"equals_string": "image_mask", "ifabsent": "string(image_mask)"}
|
|
||||||
},
|
|
||||||
)
|
|
||||||
description: str = Field(..., description="""Description of what these vectors represent.""")
|
|
||||||
value: Optional[
|
|
||||||
Union[
|
|
||||||
NDArray[Shape["* dim0"], Any],
|
|
||||||
NDArray[Shape["* dim0, * dim1"], Any],
|
|
||||||
NDArray[Shape["* dim0, * dim1, * dim2"], Any],
|
|
||||||
NDArray[Shape["* dim0, * dim1, * dim2, * dim3"], Any],
|
|
||||||
]
|
|
||||||
] = Field(None)
|
|
||||||
|
|
||||||
|
|
||||||
class PlaneSegmentationPixelMask(VectorData):
|
class PlaneSegmentationPixelMask(VectorData):
|
||||||
|
@ -599,7 +613,7 @@ class ImagingPlane(NWBContainer):
|
||||||
None,
|
None,
|
||||||
description="""Describes reference frame of origin_coords and grid_spacing. For example, this can be a text description of the anatomical location and orientation of the grid defined by origin_coords and grid_spacing or the vectors needed to transform or rotate the grid to a common anatomical axis (e.g., AP/DV/ML). This field is necessary to interpret origin_coords and grid_spacing. If origin_coords and grid_spacing are not present, then this field is not required. For example, if the microscope takes 10 x 10 x 2 images, where the first value of the data matrix (index (0, 0, 0)) corresponds to (-1.2, -0.6, -2) mm relative to bregma, the spacing between pixels is 0.2 mm in x, 0.2 mm in y and 0.5 mm in z, and larger numbers in x means more anterior, larger numbers in y means more rightward, and larger numbers in z means more ventral, then enter the following -- origin_coords = (-1.2, -0.6, -2) grid_spacing = (0.2, 0.2, 0.5) reference_frame = \"Origin coordinates are relative to bregma. First dimension corresponds to anterior-posterior axis (larger index = more anterior). Second dimension corresponds to medial-lateral axis (larger index = more rightward). Third dimension corresponds to dorsal-ventral axis (larger index = more ventral).\"""",
|
description="""Describes reference frame of origin_coords and grid_spacing. For example, this can be a text description of the anatomical location and orientation of the grid defined by origin_coords and grid_spacing or the vectors needed to transform or rotate the grid to a common anatomical axis (e.g., AP/DV/ML). This field is necessary to interpret origin_coords and grid_spacing. If origin_coords and grid_spacing are not present, then this field is not required. For example, if the microscope takes 10 x 10 x 2 images, where the first value of the data matrix (index (0, 0, 0)) corresponds to (-1.2, -0.6, -2) mm relative to bregma, the spacing between pixels is 0.2 mm in x, 0.2 mm in y and 0.5 mm in z, and larger numbers in x means more anterior, larger numbers in y means more rightward, and larger numbers in z means more ventral, then enter the following -- origin_coords = (-1.2, -0.6, -2) grid_spacing = (0.2, 0.2, 0.5) reference_frame = \"Origin coordinates are relative to bregma. First dimension corresponds to anterior-posterior axis (larger index = more anterior). Second dimension corresponds to medial-lateral axis (larger index = more rightward). Third dimension corresponds to dorsal-ventral axis (larger index = more ventral).\"""",
|
||||||
)
|
)
|
||||||
optical_channel: List[OpticalChannel] = Field(
|
optical_channel: Dict[str, OpticalChannel] = Field(
|
||||||
..., description="""An optical channel used to record from an imaging plane."""
|
..., description="""An optical channel used to record from an imaging plane."""
|
||||||
)
|
)
|
||||||
device: Union[Device, str] = Field(
|
device: Union[Device, str] = Field(
|
||||||
|
@ -713,10 +727,13 @@ class MotionCorrection(NWBDataInterface):
|
||||||
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
{"from_schema": "core.nwb.ophys", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[CorrectedImageStack]] = Field(
|
name: str = Field(
|
||||||
|
"MotionCorrection",
|
||||||
|
json_schema_extra={"linkml_meta": {"ifabsent": "string(MotionCorrection)"}},
|
||||||
|
)
|
||||||
|
value: Optional[Dict[str, CorrectedImageStack]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "CorrectedImageStack"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "CorrectedImageStack"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
class CorrectedImageStack(NWBDataInterface):
|
class CorrectedImageStack(NWBDataInterface):
|
||||||
|
@ -751,11 +768,11 @@ class CorrectedImageStack(NWBDataInterface):
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
TwoPhotonSeries.model_rebuild()
|
TwoPhotonSeries.model_rebuild()
|
||||||
RoiResponseSeries.model_rebuild()
|
RoiResponseSeries.model_rebuild()
|
||||||
|
RoiResponseSeriesData.model_rebuild()
|
||||||
DfOverF.model_rebuild()
|
DfOverF.model_rebuild()
|
||||||
Fluorescence.model_rebuild()
|
Fluorescence.model_rebuild()
|
||||||
ImageSegmentation.model_rebuild()
|
ImageSegmentation.model_rebuild()
|
||||||
PlaneSegmentation.model_rebuild()
|
PlaneSegmentation.model_rebuild()
|
||||||
PlaneSegmentationImageMask.model_rebuild()
|
|
||||||
PlaneSegmentationPixelMask.model_rebuild()
|
PlaneSegmentationPixelMask.model_rebuild()
|
||||||
PlaneSegmentationVoxelMask.model_rebuild()
|
PlaneSegmentationVoxelMask.model_rebuild()
|
||||||
ImagingPlane.model_rebuild()
|
ImagingPlane.model_rebuild()
|
||||||
|
|
|
@ -38,6 +38,7 @@ from ...core.v2_2_5.core_nwb_ecephys import (
|
||||||
ClusterWaveforms,
|
ClusterWaveforms,
|
||||||
Clustering,
|
Clustering,
|
||||||
ElectricalSeries,
|
ElectricalSeries,
|
||||||
|
ElectricalSeriesData,
|
||||||
ElectrodeGroup,
|
ElectrodeGroup,
|
||||||
ElectrodeGroupPosition,
|
ElectrodeGroupPosition,
|
||||||
EventDetection,
|
EventDetection,
|
||||||
|
@ -46,6 +47,7 @@ from ...core.v2_2_5.core_nwb_ecephys import (
|
||||||
FilteredEphys,
|
FilteredEphys,
|
||||||
LFP,
|
LFP,
|
||||||
SpikeEventSeries,
|
SpikeEventSeries,
|
||||||
|
SpikeEventSeriesData,
|
||||||
)
|
)
|
||||||
from ...core.v2_2_5.core_nwb_epoch import TimeIntervals, TimeIntervalsTimeseries
|
from ...core.v2_2_5.core_nwb_epoch import TimeIntervals, TimeIntervalsTimeseries
|
||||||
from ...core.v2_2_5.core_nwb_file import (
|
from ...core.v2_2_5.core_nwb_file import (
|
||||||
|
@ -87,9 +89,12 @@ from ...core.v2_2_5.core_nwb_image import (
|
||||||
GrayscaleImage,
|
GrayscaleImage,
|
||||||
ImageMaskSeries,
|
ImageMaskSeries,
|
||||||
ImageSeries,
|
ImageSeries,
|
||||||
|
ImageSeriesData,
|
||||||
ImageSeriesExternalFile,
|
ImageSeriesExternalFile,
|
||||||
IndexSeries,
|
IndexSeries,
|
||||||
|
IndexSeriesData,
|
||||||
OpticalSeries,
|
OpticalSeries,
|
||||||
|
OpticalSeriesData,
|
||||||
RGBAImage,
|
RGBAImage,
|
||||||
RGBImage,
|
RGBImage,
|
||||||
)
|
)
|
||||||
|
@ -97,14 +102,22 @@ from ...core.v2_2_5.core_nwb_misc import (
|
||||||
AbstractFeatureSeries,
|
AbstractFeatureSeries,
|
||||||
AbstractFeatureSeriesData,
|
AbstractFeatureSeriesData,
|
||||||
AnnotationSeries,
|
AnnotationSeries,
|
||||||
|
AnnotationSeriesData,
|
||||||
DecompositionSeries,
|
DecompositionSeries,
|
||||||
DecompositionSeriesBands,
|
DecompositionSeriesBands,
|
||||||
DecompositionSeriesData,
|
DecompositionSeriesData,
|
||||||
IntervalSeries,
|
IntervalSeries,
|
||||||
|
IntervalSeriesData,
|
||||||
Units,
|
Units,
|
||||||
UnitsSpikeTimes,
|
UnitsSpikeTimes,
|
||||||
|
UnitsWaveformMean,
|
||||||
|
UnitsWaveformSd,
|
||||||
|
)
|
||||||
|
from ...core.v2_2_5.core_nwb_ogen import (
|
||||||
|
OptogeneticSeries,
|
||||||
|
OptogeneticSeriesData,
|
||||||
|
OptogeneticStimulusSite,
|
||||||
)
|
)
|
||||||
from ...core.v2_2_5.core_nwb_ogen import OptogeneticSeries, OptogeneticStimulusSite
|
|
||||||
from ...core.v2_2_5.core_nwb_ophys import (
|
from ...core.v2_2_5.core_nwb_ophys import (
|
||||||
CorrectedImageStack,
|
CorrectedImageStack,
|
||||||
DfOverF,
|
DfOverF,
|
||||||
|
@ -117,10 +130,10 @@ from ...core.v2_2_5.core_nwb_ophys import (
|
||||||
MotionCorrection,
|
MotionCorrection,
|
||||||
OpticalChannel,
|
OpticalChannel,
|
||||||
PlaneSegmentation,
|
PlaneSegmentation,
|
||||||
PlaneSegmentationImageMask,
|
|
||||||
PlaneSegmentationPixelMask,
|
PlaneSegmentationPixelMask,
|
||||||
PlaneSegmentationVoxelMask,
|
PlaneSegmentationVoxelMask,
|
||||||
RoiResponseSeries,
|
RoiResponseSeries,
|
||||||
|
RoiResponseSeriesData,
|
||||||
TwoPhotonSeries,
|
TwoPhotonSeries,
|
||||||
)
|
)
|
||||||
from ...core.v2_2_5.core_nwb_retinotopy import (
|
from ...core.v2_2_5.core_nwb_retinotopy import (
|
||||||
|
|
|
@ -989,12 +989,12 @@ class DynamicTableRegion(DynamicTableRegionMixin, VectorData):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
table: DynamicTable = Field(
|
|
||||||
..., description="""Reference to the DynamicTable object that this region applies to."""
|
|
||||||
)
|
|
||||||
description: str = Field(
|
description: str = Field(
|
||||||
..., description="""Description of what this table region points to."""
|
..., description="""Description of what this table region points to."""
|
||||||
)
|
)
|
||||||
|
table: DynamicTable = Field(
|
||||||
|
..., description="""Reference to the DynamicTable object that this region applies to."""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class Container(ConfiguredBaseModel):
|
class Container(ConfiguredBaseModel):
|
||||||
|
@ -1029,9 +1029,6 @@ class DynamicTable(DynamicTableMixin):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
|
|
|
@ -989,12 +989,12 @@ class DynamicTableRegion(DynamicTableRegionMixin, VectorData):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
table: DynamicTable = Field(
|
|
||||||
..., description="""Reference to the DynamicTable object that this region applies to."""
|
|
||||||
)
|
|
||||||
description: str = Field(
|
description: str = Field(
|
||||||
..., description="""Description of what this table region points to."""
|
..., description="""Description of what this table region points to."""
|
||||||
)
|
)
|
||||||
|
table: DynamicTable = Field(
|
||||||
|
..., description="""Reference to the DynamicTable object that this region applies to."""
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class Container(ConfiguredBaseModel):
|
class Container(ConfiguredBaseModel):
|
||||||
|
@ -1029,9 +1029,6 @@ class DynamicTable(DynamicTableMixin):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
|
|
|
@ -993,12 +993,12 @@ class DynamicTableRegion(DynamicTableRegionMixin, VectorData):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
table: DynamicTable = Field(
|
|
||||||
..., description="""Reference to the DynamicTable object that this region applies to."""
|
|
||||||
)
|
|
||||||
description: str = Field(
|
description: str = Field(
|
||||||
..., description="""Description of what this table region points to."""
|
..., description="""Description of what this table region points to."""
|
||||||
)
|
)
|
||||||
|
table: DynamicTable = Field(
|
||||||
|
..., description="""Reference to the DynamicTable object that this region applies to."""
|
||||||
|
)
|
||||||
value: Optional[
|
value: Optional[
|
||||||
Union[
|
Union[
|
||||||
NDArray[Shape["* dim0"], Any],
|
NDArray[Shape["* dim0"], Any],
|
||||||
|
@ -1041,9 +1041,6 @@ class DynamicTable(DynamicTableMixin):
|
||||||
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
description="""Array of unique identifiers for the rows of this dynamic table.""",
|
||||||
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}},
|
||||||
)
|
)
|
||||||
vector_index: Optional[List[VectorIndex]] = Field(
|
|
||||||
None, description="""Indices for the vector columns of this dynamic table."""
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
|
|
|
@ -974,12 +974,12 @@ class DynamicTableRegion(DynamicTableRegionMixin, VectorData):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
table: DynamicTable = Field(
|
|
||||||
..., description="""Reference to the DynamicTable object that this region applies to."""
|
|
||||||
)
|
|
||||||
description: str = Field(
|
description: str = Field(
|
||||||
..., description="""Description of what this table region points to."""
|
..., description="""Description of what this table region points to."""
|
||||||
)
|
)
|
||||||
|
table: DynamicTable = Field(
|
||||||
|
..., description="""Reference to the DynamicTable object that this region applies to."""
|
||||||
|
)
|
||||||
value: Optional[
|
value: Optional[
|
||||||
Union[
|
Union[
|
||||||
NDArray[Shape["* dim0"], Any],
|
NDArray[Shape["* dim0"], Any],
|
||||||
|
|
|
@ -171,10 +171,10 @@ class SimpleMultiContainer(Container):
|
||||||
{"from_schema": "hdmf-common.base", "tree_root": True}
|
{"from_schema": "hdmf-common.base", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[Container]] = Field(
|
name: str = Field(...)
|
||||||
|
value: Optional[Dict[str, Container]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "Container"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "Container"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
|
|
|
@ -974,12 +974,12 @@ class DynamicTableRegion(DynamicTableRegionMixin, VectorData):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
table: DynamicTable = Field(
|
|
||||||
..., description="""Reference to the DynamicTable object that this region applies to."""
|
|
||||||
)
|
|
||||||
description: str = Field(
|
description: str = Field(
|
||||||
..., description="""Description of what this table region points to."""
|
..., description="""Description of what this table region points to."""
|
||||||
)
|
)
|
||||||
|
table: DynamicTable = Field(
|
||||||
|
..., description="""Reference to the DynamicTable object that this region applies to."""
|
||||||
|
)
|
||||||
value: Optional[
|
value: Optional[
|
||||||
Union[
|
Union[
|
||||||
NDArray[Shape["* dim0"], Any],
|
NDArray[Shape["* dim0"], Any],
|
||||||
|
|
|
@ -171,10 +171,10 @@ class SimpleMultiContainer(Container):
|
||||||
{"from_schema": "hdmf-common.base", "tree_root": True}
|
{"from_schema": "hdmf-common.base", "tree_root": True}
|
||||||
)
|
)
|
||||||
|
|
||||||
value: Optional[List[Container]] = Field(
|
name: str = Field(...)
|
||||||
|
value: Optional[Dict[str, Container]] = Field(
|
||||||
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "Container"}]}}
|
None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "Container"}]}}
|
||||||
)
|
)
|
||||||
name: str = Field(...)
|
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
|
|
|
@ -169,23 +169,15 @@ class CSRMatrix(Container):
|
||||||
"linkml_meta": {"array": {"dimensions": [{"alias": "number_of_rows_in_the_matrix_1"}]}}
|
"linkml_meta": {"array": {"dimensions": [{"alias": "number_of_rows_in_the_matrix_1"}]}}
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
data: CSRMatrixData = Field(..., description="""The non-zero values in the matrix.""")
|
data: NDArray[Shape["* number_of_non_zero_values"], Any] = Field(
|
||||||
|
...,
|
||||||
|
description="""The non-zero values in the matrix.""",
|
||||||
class CSRMatrixData(ConfiguredBaseModel):
|
json_schema_extra={
|
||||||
"""
|
"linkml_meta": {"array": {"dimensions": [{"alias": "number_of_non_zero_values"}]}}
|
||||||
The non-zero values in the matrix.
|
},
|
||||||
"""
|
|
||||||
|
|
||||||
linkml_meta: ClassVar[LinkMLMeta] = LinkMLMeta({"from_schema": "hdmf-common.sparse"})
|
|
||||||
|
|
||||||
name: Literal["data"] = Field(
|
|
||||||
"data",
|
|
||||||
json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}},
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# Model rebuild
|
# Model rebuild
|
||||||
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
# see https://pydantic-docs.helpmanual.io/usage/models/#rebuilding-a-model
|
||||||
CSRMatrix.model_rebuild()
|
CSRMatrix.model_rebuild()
|
||||||
CSRMatrixData.model_rebuild()
|
|
||||||
|
|
|
@ -974,12 +974,12 @@ class DynamicTableRegion(DynamicTableRegionMixin, VectorData):
|
||||||
)
|
)
|
||||||
|
|
||||||
name: str = Field(...)
|
name: str = Field(...)
|
||||||
table: DynamicTable = Field(
|
|
||||||
..., description="""Reference to the DynamicTable object that this region applies to."""
|
|
||||||
)
|
|
||||||
description: str = Field(
|
description: str = Field(
|
||||||
..., description="""Description of what this table region points to."""
|
..., description="""Description of what this table region points to."""
|
||||||
)
|
)
|
||||||
|
table: DynamicTable = Field(
|
||||||
|
..., description="""Reference to the DynamicTable object that this region applies to."""
|
||||||
|
)
|
||||||
value: Optional[
|
value: Optional[
|
||||||
Union[
|
Union[
|
||||||
NDArray[Shape["* dim0"], Any],
|
NDArray[Shape["* dim0"], Any],
|
||||||
|
|
|
@ -18,7 +18,7 @@ from ...hdmf_common.v1_3_0.hdmf_common_resources import (
|
||||||
ExternalResourcesObjects,
|
ExternalResourcesObjects,
|
||||||
ExternalResourcesResources,
|
ExternalResourcesResources,
|
||||||
)
|
)
|
||||||
from ...hdmf_common.v1_3_0.hdmf_common_sparse import CSRMatrix, CSRMatrixData
|
from ...hdmf_common.v1_3_0.hdmf_common_sparse import CSRMatrix
|
||||||
from ...hdmf_common.v1_3_0.hdmf_common_table import (
|
from ...hdmf_common.v1_3_0.hdmf_common_table import (
|
||||||
DynamicTable,
|
DynamicTable,
|
||||||
DynamicTableRegion,
|
DynamicTableRegion,
|
||||||
|
|
|
@ -11,7 +11,7 @@ import numpy as np
|
||||||
from numpydantic import NDArray, Shape
|
from numpydantic import NDArray, Shape
|
||||||
from pydantic import BaseModel, ConfigDict, Field, RootModel, field_validator, model_validator
|
from pydantic import BaseModel, ConfigDict, Field, RootModel, field_validator, model_validator
|
||||||
|
|
||||||
from ...hdmf_common.v1_4_0.hdmf_common_table import VectorData
|
from ...hdmf_common.v1_5_0.hdmf_common_table import VectorData
|
||||||
|
|
||||||
|
|
||||||
metamodel_version = "None"
|
metamodel_version = "None"
|
||||||
|
@ -136,7 +136,7 @@ linkml_meta = LinkMLMeta(
|
||||||
},
|
},
|
||||||
"default_prefix": "hdmf-experimental.experimental/",
|
"default_prefix": "hdmf-experimental.experimental/",
|
||||||
"id": "hdmf-experimental.experimental",
|
"id": "hdmf-experimental.experimental",
|
||||||
"imports": ["../../hdmf_common/v1_4_0/namespace", "hdmf-experimental.nwb.language"],
|
"imports": ["../../hdmf_common/v1_5_0/namespace", "hdmf-experimental.nwb.language"],
|
||||||
"name": "hdmf-experimental.experimental",
|
"name": "hdmf-experimental.experimental",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
|
@ -11,7 +11,7 @@ import numpy as np
|
||||||
from numpydantic import NDArray, Shape
|
from numpydantic import NDArray, Shape
|
||||||
from pydantic import BaseModel, ConfigDict, Field, RootModel, field_validator, model_validator
|
from pydantic import BaseModel, ConfigDict, Field, RootModel, field_validator, model_validator
|
||||||
|
|
||||||
from ...hdmf_common.v1_4_0.hdmf_common_base import Container, Data
|
from ...hdmf_common.v1_5_0.hdmf_common_base import Container, Data
|
||||||
|
|
||||||
|
|
||||||
metamodel_version = "None"
|
metamodel_version = "None"
|
||||||
|
@ -136,7 +136,7 @@ linkml_meta = LinkMLMeta(
|
||||||
},
|
},
|
||||||
"default_prefix": "hdmf-experimental.resources/",
|
"default_prefix": "hdmf-experimental.resources/",
|
||||||
"id": "hdmf-experimental.resources",
|
"id": "hdmf-experimental.resources",
|
||||||
"imports": ["../../hdmf_common/v1_4_0/namespace", "hdmf-experimental.nwb.language"],
|
"imports": ["../../hdmf_common/v1_5_0/namespace", "hdmf-experimental.nwb.language"],
|
||||||
"name": "hdmf-experimental.resources",
|
"name": "hdmf-experimental.resources",
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
|
@ -10,9 +10,10 @@ from typing import Any, ClassVar, Dict, List, Literal, Optional, Union
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from pydantic import BaseModel, ConfigDict, Field, RootModel, field_validator, model_validator
|
from pydantic import BaseModel, ConfigDict, Field, RootModel, field_validator, model_validator
|
||||||
|
|
||||||
from ...hdmf_common.v1_4_0.hdmf_common_base import Container, Data, SimpleMultiContainer
|
from ...hdmf_common.v1_5_0.hdmf_common_base import Container, Data, SimpleMultiContainer
|
||||||
from ...hdmf_common.v1_4_0.hdmf_common_sparse import CSRMatrix
|
from ...hdmf_common.v1_5_0.hdmf_common_sparse import CSRMatrix
|
||||||
from ...hdmf_common.v1_4_0.hdmf_common_table import (
|
from ...hdmf_common.v1_5_0.hdmf_common_table import (
|
||||||
|
AlignedDynamicTable,
|
||||||
DynamicTable,
|
DynamicTable,
|
||||||
DynamicTableRegion,
|
DynamicTableRegion,
|
||||||
ElementIdentifiers,
|
ElementIdentifiers,
|
||||||
|
|
|
@ -20,6 +20,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
@ -32,6 +33,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
resolution:
|
resolution:
|
||||||
|
@ -73,6 +75,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
@ -84,6 +87,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
@ -94,6 +98,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
@ -118,15 +123,14 @@ classes:
|
||||||
external file.
|
external file.
|
||||||
range: TimeSeries__data
|
range: TimeSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
starting_time:
|
starting_time:
|
||||||
name: starting_time
|
name: starting_time
|
||||||
description: Timestamp of the first sample in seconds. When timestamps are
|
description: Timestamp of the first sample in seconds. When timestamps are
|
||||||
uniformly spaced, the timestamp of the first sample can be specified and
|
uniformly spaced, the timestamp of the first sample can be specified and
|
||||||
all subsequent ones calculated from the sampling rate attribute.
|
all subsequent ones calculated from the sampling rate attribute.
|
||||||
range: TimeSeries__starting_time
|
range: TimeSeries__starting_time
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
timestamps:
|
timestamps:
|
||||||
name: timestamps
|
name: timestamps
|
||||||
description: Timestamps for samples stored in data, in seconds, relative to
|
description: Timestamps for samples stored in data, in seconds, relative to
|
||||||
|
@ -168,8 +172,8 @@ classes:
|
||||||
external to the NWB file, in files storing raw data. Once timestamp data
|
external to the NWB file, in files storing raw data. Once timestamp data
|
||||||
is calculated, the contents of 'sync' are mostly for archival purposes.
|
is calculated, the contents of 'sync' are mostly for archival purposes.
|
||||||
range: TimeSeries__sync
|
range: TimeSeries__sync
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
inlined_as_list: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
TimeSeries__data:
|
TimeSeries__data:
|
||||||
name: TimeSeries__data
|
name: TimeSeries__data
|
||||||
|
@ -180,6 +184,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(data)
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: data
|
equals_string: data
|
||||||
|
@ -244,6 +249,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(starting_time)
|
ifabsent: string(starting_time)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: starting_time
|
equals_string: starting_time
|
||||||
|
@ -275,6 +281,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(sync)
|
ifabsent: string(sync)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: sync
|
equals_string: sync
|
||||||
|
@ -283,13 +290,24 @@ classes:
|
||||||
description: A collection of processed data.
|
description: A collection of processed data.
|
||||||
is_a: NWBContainer
|
is_a: NWBContainer
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
identifier: true
|
||||||
inlined_as_list: false
|
range: string
|
||||||
any_of:
|
required: true
|
||||||
- range: NWBDataInterface
|
description:
|
||||||
- range: DynamicTable
|
name: description
|
||||||
|
description: Description of this collection of processed data.
|
||||||
|
range: text
|
||||||
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: NWBDataInterface
|
||||||
|
- range: DynamicTable
|
||||||
tree_root: true
|
tree_root: true
|
||||||
Images:
|
Images:
|
||||||
name: Images
|
name: Images
|
||||||
|
@ -299,6 +317,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(Images)
|
ifabsent: string(Images)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -29,6 +29,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
|
@ -37,13 +38,11 @@ classes:
|
||||||
reference frame.
|
reference frame.
|
||||||
range: SpatialSeries__data
|
range: SpatialSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
reference_frame:
|
reference_frame:
|
||||||
name: reference_frame
|
name: reference_frame
|
||||||
description: Description defining what exactly 'straight-ahead' means.
|
description: Description defining what exactly 'straight-ahead' means.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
tree_root: true
|
tree_root: true
|
||||||
SpatialSeries__data:
|
SpatialSeries__data:
|
||||||
name: SpatialSeries__data
|
name: SpatialSeries__data
|
||||||
|
@ -53,9 +52,33 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(data)
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: data
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
unit:
|
unit:
|
||||||
name: unit
|
name: unit
|
||||||
description: Base unit of measurement for working with the data. The default
|
description: Base unit of measurement for working with the data. The default
|
||||||
|
@ -91,12 +114,19 @@ classes:
|
||||||
events. BehavioralTimeSeries is for continuous data.
|
events. BehavioralTimeSeries is for continuous data.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(BehavioralEpochs)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: IntervalSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: IntervalSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
BehavioralEvents:
|
BehavioralEvents:
|
||||||
name: BehavioralEvents
|
name: BehavioralEvents
|
||||||
|
@ -104,12 +134,19 @@ classes:
|
||||||
for more details.
|
for more details.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(BehavioralEvents)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: TimeSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: TimeSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
BehavioralTimeSeries:
|
BehavioralTimeSeries:
|
||||||
name: BehavioralTimeSeries
|
name: BehavioralTimeSeries
|
||||||
|
@ -117,36 +154,57 @@ classes:
|
||||||
of <a href="#BehavioralEpochs">BehavioralEpochs</a> for more details.
|
of <a href="#BehavioralEpochs">BehavioralEpochs</a> for more details.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(BehavioralTimeSeries)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: TimeSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: TimeSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
PupilTracking:
|
PupilTracking:
|
||||||
name: PupilTracking
|
name: PupilTracking
|
||||||
description: Eye-tracking data, representing pupil size.
|
description: Eye-tracking data, representing pupil size.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(PupilTracking)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: TimeSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: TimeSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
EyeTracking:
|
EyeTracking:
|
||||||
name: EyeTracking
|
name: EyeTracking
|
||||||
description: Eye-tracking data, representing direction of gaze.
|
description: Eye-tracking data, representing direction of gaze.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(EyeTracking)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: SpatialSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: SpatialSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
CompassDirection:
|
CompassDirection:
|
||||||
name: CompassDirection
|
name: CompassDirection
|
||||||
|
@ -157,22 +215,36 @@ classes:
|
||||||
be radians or degrees.
|
be radians or degrees.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(CompassDirection)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: SpatialSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: SpatialSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
Position:
|
Position:
|
||||||
name: Position
|
name: Position
|
||||||
description: Position data, whether along the x, x/y or x/y/z axis.
|
description: Position data, whether along the x, x/y or x/y/z axis.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(Position)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: SpatialSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: SpatialSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
|
|
@ -21,6 +21,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -25,41 +25,9 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
|
||||||
name: data
|
|
||||||
description: Recorded voltage data.
|
|
||||||
range: numeric
|
|
||||||
required: true
|
|
||||||
multivalued: false
|
|
||||||
any_of:
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_times
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_times
|
|
||||||
- alias: num_channels
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_times
|
|
||||||
- alias: num_channels
|
|
||||||
- alias: num_samples
|
|
||||||
electrodes:
|
|
||||||
name: electrodes
|
|
||||||
annotations:
|
|
||||||
named:
|
|
||||||
tag: named
|
|
||||||
value: true
|
|
||||||
source_type:
|
|
||||||
tag: source_type
|
|
||||||
value: neurodata_type_inc
|
|
||||||
description: DynamicTableRegion pointer to the electrodes that this time series
|
|
||||||
was generated from.
|
|
||||||
range: DynamicTableRegion
|
|
||||||
required: true
|
|
||||||
multivalued: false
|
|
||||||
channel_conversion:
|
channel_conversion:
|
||||||
name: channel_conversion
|
name: channel_conversion
|
||||||
description: Channel-specific conversion factor. Multiply the data in the
|
description: Channel-specific conversion factor. Multiply the data in the
|
||||||
|
@ -77,7 +45,87 @@ classes:
|
||||||
range: float32
|
range: float32
|
||||||
required: false
|
required: false
|
||||||
multivalued: false
|
multivalued: false
|
||||||
|
data:
|
||||||
|
name: data
|
||||||
|
description: Recorded voltage data.
|
||||||
|
range: ElectricalSeries__data
|
||||||
|
required: true
|
||||||
|
inlined: true
|
||||||
|
electrodes:
|
||||||
|
name: electrodes
|
||||||
|
annotations:
|
||||||
|
named:
|
||||||
|
tag: named
|
||||||
|
value: true
|
||||||
|
source_type:
|
||||||
|
tag: source_type
|
||||||
|
value: neurodata_type_inc
|
||||||
|
description: DynamicTableRegion pointer to the electrodes that this time series
|
||||||
|
was generated from.
|
||||||
|
range: DynamicTableRegion
|
||||||
|
required: true
|
||||||
|
inlined: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
ElectricalSeries__data:
|
||||||
|
name: ElectricalSeries__data
|
||||||
|
description: Recorded voltage data.
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
description: Base unit of measurement for working with the data. This value
|
||||||
|
is fixed to 'volts'. Actual stored values are not necessarily stored in
|
||||||
|
these units. To access the data in these units, multiply 'data' by 'conversion'
|
||||||
|
and 'channel_conversion' (if present).
|
||||||
|
ifabsent: string(volts)
|
||||||
|
range: text
|
||||||
|
required: true
|
||||||
|
equals_string: volts
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
range: numeric
|
||||||
|
any_of:
|
||||||
|
- array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
- array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
- alias: num_channels
|
||||||
|
- array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
- alias: num_channels
|
||||||
|
- alias: num_samples
|
||||||
SpikeEventSeries:
|
SpikeEventSeries:
|
||||||
name: SpikeEventSeries
|
name: SpikeEventSeries
|
||||||
description: 'Stores snapshots/snippets of recorded spike events (i.e., threshold
|
description: 'Stores snapshots/snippets of recorded spike events (i.e., threshold
|
||||||
|
@ -92,24 +140,15 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
name: data
|
name: data
|
||||||
description: Spike waveforms.
|
description: Spike waveforms.
|
||||||
range: numeric
|
range: SpikeEventSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_events
|
|
||||||
- alias: num_samples
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_events
|
|
||||||
- alias: num_channels
|
|
||||||
- alias: num_samples
|
|
||||||
timestamps:
|
timestamps:
|
||||||
name: timestamps
|
name: timestamps
|
||||||
description: Timestamps for samples stored in data, in seconds, relative to
|
description: Timestamps for samples stored in data, in seconds, relative to
|
||||||
|
@ -123,6 +162,60 @@ classes:
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
multivalued: false
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
SpikeEventSeries__data:
|
||||||
|
name: SpikeEventSeries__data
|
||||||
|
description: Spike waveforms.
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
description: Unit of measurement for waveforms, which is fixed to 'volts'.
|
||||||
|
ifabsent: string(volts)
|
||||||
|
range: text
|
||||||
|
required: true
|
||||||
|
equals_string: volts
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
range: numeric
|
||||||
|
any_of:
|
||||||
|
- array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_events
|
||||||
|
- alias: num_samples
|
||||||
|
- array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_events
|
||||||
|
- alias: num_channels
|
||||||
|
- alias: num_samples
|
||||||
FeatureExtraction:
|
FeatureExtraction:
|
||||||
name: FeatureExtraction
|
name: FeatureExtraction
|
||||||
description: Features, such as PC1 and PC2, that are extracted from signals stored
|
description: Features, such as PC1 and PC2, that are extracted from signals stored
|
||||||
|
@ -132,6 +225,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(FeatureExtraction)
|
ifabsent: string(FeatureExtraction)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
@ -177,7 +271,7 @@ classes:
|
||||||
was generated from.
|
was generated from.
|
||||||
range: DynamicTableRegion
|
range: DynamicTableRegion
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
EventDetection:
|
EventDetection:
|
||||||
name: EventDetection
|
name: EventDetection
|
||||||
|
@ -187,6 +281,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(EventDetection)
|
ifabsent: string(EventDetection)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
detection_method:
|
detection_method:
|
||||||
|
@ -195,7 +290,6 @@ classes:
|
||||||
or dV/dT threshold, as well as relevant values.
|
or dV/dT threshold, as well as relevant values.
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
source_idx:
|
source_idx:
|
||||||
name: source_idx
|
name: source_idx
|
||||||
description: Indices (zero-based) into source ElectricalSeries::data array
|
description: Indices (zero-based) into source ElectricalSeries::data array
|
||||||
|
@ -224,7 +318,7 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: ElectricalSeries
|
- range: ElectricalSeries
|
||||||
- range: string
|
- range: string
|
||||||
|
@ -236,12 +330,19 @@ classes:
|
||||||
during experiment acquisition.
|
during experiment acquisition.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(EventWaveform)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: SpikeEventSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: SpikeEventSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
FilteredEphys:
|
FilteredEphys:
|
||||||
name: FilteredEphys
|
name: FilteredEphys
|
||||||
|
@ -258,12 +359,19 @@ classes:
|
||||||
the ElectricalSeries.
|
the ElectricalSeries.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(FilteredEphys)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: ElectricalSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: ElectricalSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
LFP:
|
LFP:
|
||||||
name: LFP
|
name: LFP
|
||||||
|
@ -272,12 +380,19 @@ classes:
|
||||||
properties should be noted in the ElectricalSeries description or comments field.
|
properties should be noted in the ElectricalSeries description or comments field.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(LFP)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: ElectricalSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: ElectricalSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
ElectrodeGroup:
|
ElectrodeGroup:
|
||||||
name: ElectrodeGroup
|
name: ElectrodeGroup
|
||||||
|
@ -286,6 +401,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
@ -304,8 +420,7 @@ classes:
|
||||||
name: position
|
name: position
|
||||||
description: stereotaxic or common framework coordinates
|
description: stereotaxic or common framework coordinates
|
||||||
range: ElectrodeGroup__position
|
range: ElectrodeGroup__position
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
device:
|
device:
|
||||||
name: device
|
name: device
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -313,7 +428,7 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: Device
|
- range: Device
|
||||||
- range: string
|
- range: string
|
||||||
|
@ -325,6 +440,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(position)
|
ifabsent: string(position)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: position
|
equals_string: position
|
||||||
|
@ -334,24 +450,18 @@ classes:
|
||||||
array:
|
array:
|
||||||
exact_number_dimensions: 1
|
exact_number_dimensions: 1
|
||||||
range: float32
|
range: float32
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
y:
|
y:
|
||||||
name: y
|
name: y
|
||||||
description: y coordinate
|
description: y coordinate
|
||||||
array:
|
array:
|
||||||
exact_number_dimensions: 1
|
exact_number_dimensions: 1
|
||||||
range: float32
|
range: float32
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
z:
|
z:
|
||||||
name: z
|
name: z
|
||||||
description: z coordinate
|
description: z coordinate
|
||||||
array:
|
array:
|
||||||
exact_number_dimensions: 1
|
exact_number_dimensions: 1
|
||||||
range: float32
|
range: float32
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
ClusterWaveforms:
|
ClusterWaveforms:
|
||||||
name: ClusterWaveforms
|
name: ClusterWaveforms
|
||||||
description: DEPRECATED The mean waveform shape, including standard deviation,
|
description: DEPRECATED The mean waveform shape, including standard deviation,
|
||||||
|
@ -365,6 +475,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(ClusterWaveforms)
|
ifabsent: string(ClusterWaveforms)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
waveform_filtering:
|
waveform_filtering:
|
||||||
|
@ -372,7 +483,6 @@ classes:
|
||||||
description: Filtering applied to data before generating mean/sd
|
description: Filtering applied to data before generating mean/sd
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
waveform_mean:
|
waveform_mean:
|
||||||
name: waveform_mean
|
name: waveform_mean
|
||||||
description: The mean waveform for each cluster, using the same indices for
|
description: The mean waveform for each cluster, using the same indices for
|
||||||
|
@ -404,7 +514,7 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: Clustering
|
- range: Clustering
|
||||||
- range: string
|
- range: string
|
||||||
|
@ -418,6 +528,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(Clustering)
|
ifabsent: string(Clustering)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
@ -426,7 +537,6 @@ classes:
|
||||||
clusters curated using Klusters, etc)
|
clusters curated using Klusters, etc)
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
num:
|
num:
|
||||||
name: num
|
name: num
|
||||||
description: Cluster number of each event
|
description: Cluster number of each event
|
||||||
|
|
|
@ -22,6 +22,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
start_time:
|
start_time:
|
||||||
|
@ -62,14 +63,12 @@ classes:
|
||||||
value: neurodata_type_inc
|
value: neurodata_type_inc
|
||||||
description: Index for tags.
|
description: Index for tags.
|
||||||
range: VectorIndex
|
range: VectorIndex
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
timeseries:
|
timeseries:
|
||||||
name: timeseries
|
name: timeseries
|
||||||
description: An index into a TimeSeries object.
|
description: An index into a TimeSeries object.
|
||||||
range: TimeIntervals__timeseries
|
range: TimeIntervals__timeseries
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
timeseries_index:
|
timeseries_index:
|
||||||
name: timeseries_index
|
name: timeseries_index
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -81,8 +80,7 @@ classes:
|
||||||
value: neurodata_type_inc
|
value: neurodata_type_inc
|
||||||
description: Index for timeseries.
|
description: Index for timeseries.
|
||||||
range: VectorIndex
|
range: VectorIndex
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
tree_root: true
|
tree_root: true
|
||||||
TimeIntervals__timeseries:
|
TimeIntervals__timeseries:
|
||||||
name: TimeIntervals__timeseries
|
name: TimeIntervals__timeseries
|
||||||
|
@ -92,6 +90,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(timeseries)
|
ifabsent: string(timeseries)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: timeseries
|
equals_string: timeseries
|
||||||
|
@ -103,8 +102,6 @@ classes:
|
||||||
array:
|
array:
|
||||||
exact_number_dimensions: 1
|
exact_number_dimensions: 1
|
||||||
range: int32
|
range: int32
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
count:
|
count:
|
||||||
name: count
|
name: count
|
||||||
description: Number of data samples available in this time series, during
|
description: Number of data samples available in this time series, during
|
||||||
|
@ -112,13 +109,10 @@ classes:
|
||||||
array:
|
array:
|
||||||
exact_number_dimensions: 1
|
exact_number_dimensions: 1
|
||||||
range: int32
|
range: int32
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
timeseries:
|
timeseries:
|
||||||
name: timeseries
|
name: timeseries
|
||||||
description: the TimeSeries that this index applies to.
|
description: the TimeSeries that this index applies to.
|
||||||
array:
|
array:
|
||||||
exact_number_dimensions: 1
|
exact_number_dimensions: 1
|
||||||
range: TimeSeries
|
range: TimeSeries
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
|
|
|
@ -30,6 +30,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(root)
|
ifabsent: string(root)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: root
|
equals_string: root
|
||||||
|
@ -64,13 +65,11 @@ classes:
|
||||||
other files.
|
other files.
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
session_description:
|
session_description:
|
||||||
name: session_description
|
name: session_description
|
||||||
description: A description of the experimental session and data in the file.
|
description: A description of the experimental session and data in the file.
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
session_start_time:
|
session_start_time:
|
||||||
name: session_start_time
|
name: session_start_time
|
||||||
description: 'Date and time of the experiment/session start. The date is stored
|
description: 'Date and time of the experiment/session start. The date is stored
|
||||||
|
@ -79,7 +78,6 @@ classes:
|
||||||
offset. Date accuracy is up to milliseconds.'
|
offset. Date accuracy is up to milliseconds.'
|
||||||
range: isodatetime
|
range: isodatetime
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
timestamps_reference_time:
|
timestamps_reference_time:
|
||||||
name: timestamps_reference_time
|
name: timestamps_reference_time
|
||||||
description: 'Date and time corresponding to time zero of all timestamps.
|
description: 'Date and time corresponding to time zero of all timestamps.
|
||||||
|
@ -89,7 +87,6 @@ classes:
|
||||||
times stored in the file use this time as reference (i.e., time zero).'
|
times stored in the file use this time as reference (i.e., time zero).'
|
||||||
range: isodatetime
|
range: isodatetime
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
acquisition:
|
acquisition:
|
||||||
name: acquisition
|
name: acquisition
|
||||||
description: Data streams recorded from the system, including ephys, ophys,
|
description: Data streams recorded from the system, including ephys, ophys,
|
||||||
|
@ -168,7 +165,8 @@ classes:
|
||||||
can exist in the present file or can be linked to a remote library file.
|
can exist in the present file or can be linked to a remote library file.
|
||||||
range: NWBFile__stimulus
|
range: NWBFile__stimulus
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
|
inlined_as_list: true
|
||||||
general:
|
general:
|
||||||
name: general
|
name: general
|
||||||
description: Experimental metadata, including protocol, notes and description
|
description: Experimental metadata, including protocol, notes and description
|
||||||
|
@ -188,7 +186,8 @@ classes:
|
||||||
should not be created unless there is data to store within them.
|
should not be created unless there is data to store within them.
|
||||||
range: NWBFile__general
|
range: NWBFile__general
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
|
inlined_as_list: true
|
||||||
intervals:
|
intervals:
|
||||||
name: intervals
|
name: intervals
|
||||||
description: Experimental intervals, whether that be logically distinct sub-experiments
|
description: Experimental intervals, whether that be logically distinct sub-experiments
|
||||||
|
@ -196,14 +195,18 @@ classes:
|
||||||
an experiment, or epochs (see epochs subgroup) deriving from analysis of
|
an experiment, or epochs (see epochs subgroup) deriving from analysis of
|
||||||
data.
|
data.
|
||||||
range: NWBFile__intervals
|
range: NWBFile__intervals
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
inlined_as_list: true
|
||||||
units:
|
units:
|
||||||
name: units
|
name: units
|
||||||
description: Data about sorted spike units.
|
description: Data about sorted spike units.
|
||||||
range: Units
|
range: Units
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
inlined_as_list: false
|
||||||
|
specifications:
|
||||||
|
name: specifications
|
||||||
|
description: Nested dictionary of schema specifications
|
||||||
|
range: dict
|
||||||
tree_root: true
|
tree_root: true
|
||||||
NWBFile__stimulus:
|
NWBFile__stimulus:
|
||||||
name: NWBFile__stimulus
|
name: NWBFile__stimulus
|
||||||
|
@ -223,6 +226,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(stimulus)
|
ifabsent: string(stimulus)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: stimulus
|
equals_string: stimulus
|
||||||
|
@ -265,6 +269,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(general)
|
ifabsent: string(general)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: general
|
equals_string: general
|
||||||
|
@ -272,14 +277,10 @@ classes:
|
||||||
name: data_collection
|
name: data_collection
|
||||||
description: Notes about data collection and analysis.
|
description: Notes about data collection and analysis.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
experiment_description:
|
experiment_description:
|
||||||
name: experiment_description
|
name: experiment_description
|
||||||
description: General description of the experiment.
|
description: General description of the experiment.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
experimenter:
|
experimenter:
|
||||||
name: experimenter
|
name: experimenter
|
||||||
description: Name of person(s) who performed the experiment. Can also specify
|
description: Name of person(s) who performed the experiment. Can also specify
|
||||||
|
@ -294,8 +295,6 @@ classes:
|
||||||
name: institution
|
name: institution
|
||||||
description: Institution(s) where experiment was performed.
|
description: Institution(s) where experiment was performed.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
keywords:
|
keywords:
|
||||||
name: keywords
|
name: keywords
|
||||||
description: Terms to search over.
|
description: Terms to search over.
|
||||||
|
@ -309,28 +308,20 @@ classes:
|
||||||
name: lab
|
name: lab
|
||||||
description: Laboratory where experiment was performed.
|
description: Laboratory where experiment was performed.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
notes:
|
notes:
|
||||||
name: notes
|
name: notes
|
||||||
description: Notes about the experiment.
|
description: Notes about the experiment.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
pharmacology:
|
pharmacology:
|
||||||
name: pharmacology
|
name: pharmacology
|
||||||
description: Description of drugs used, including how and when they were administered.
|
description: Description of drugs used, including how and when they were administered.
|
||||||
Anesthesia(s), painkiller(s), etc., plus dosage, concentration, etc.
|
Anesthesia(s), painkiller(s), etc., plus dosage, concentration, etc.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
protocol:
|
protocol:
|
||||||
name: protocol
|
name: protocol
|
||||||
description: Experimental protocol, if applicable. e.g., include IACUC protocol
|
description: Experimental protocol, if applicable. e.g., include IACUC protocol
|
||||||
number.
|
number.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
related_publications:
|
related_publications:
|
||||||
name: related_publications
|
name: related_publications
|
||||||
description: Publication information. PMID, DOI, URL, etc.
|
description: Publication information. PMID, DOI, URL, etc.
|
||||||
|
@ -344,49 +335,39 @@ classes:
|
||||||
name: session_id
|
name: session_id
|
||||||
description: Lab-specific ID for the session.
|
description: Lab-specific ID for the session.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
slices:
|
slices:
|
||||||
name: slices
|
name: slices
|
||||||
description: Description of slices, including information about preparation
|
description: Description of slices, including information about preparation
|
||||||
thickness, orientation, temperature, and bath solution.
|
thickness, orientation, temperature, and bath solution.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
source_script:
|
source_script:
|
||||||
name: source_script
|
name: source_script
|
||||||
description: Script file or link to public source code used to create this
|
description: Script file or link to public source code used to create this
|
||||||
NWB file.
|
NWB file.
|
||||||
range: general__source_script
|
range: general__source_script
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
stimulus:
|
stimulus:
|
||||||
name: stimulus
|
name: stimulus
|
||||||
description: Notes about stimuli, such as how and where they were presented.
|
description: Notes about stimuli, such as how and where they were presented.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
surgery:
|
surgery:
|
||||||
name: surgery
|
name: surgery
|
||||||
description: Narrative description about surgery/surgeries, including date(s)
|
description: Narrative description about surgery/surgeries, including date(s)
|
||||||
and who performed surgery.
|
and who performed surgery.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
virus:
|
virus:
|
||||||
name: virus
|
name: virus
|
||||||
description: Information about virus(es) used in experiments, including virus
|
description: Information about virus(es) used in experiments, including virus
|
||||||
ID, source, date made, injection location, volume, etc.
|
ID, source, date made, injection location, volume, etc.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
nwb_container:
|
nwb_container:
|
||||||
name: nwb_container
|
name: nwb_container
|
||||||
description: Place-holder than can be extended so that lab-specific meta-data
|
description: Place-holder than can be extended so that lab-specific meta-data
|
||||||
can be placed in /general.
|
can be placed in /general.
|
||||||
range: NWBContainer
|
range: NWBContainer
|
||||||
required: false
|
|
||||||
multivalued: true
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
devices:
|
devices:
|
||||||
name: devices
|
name: devices
|
||||||
description: Description of hardware devices used during experiment, e.g.,
|
description: Description of hardware devices used during experiment, e.g.,
|
||||||
|
@ -401,20 +382,20 @@ classes:
|
||||||
description: Information about the animal or person from which the data was
|
description: Information about the animal or person from which the data was
|
||||||
measured.
|
measured.
|
||||||
range: Subject
|
range: Subject
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
inlined_as_list: true
|
||||||
extracellular_ephys:
|
extracellular_ephys:
|
||||||
name: extracellular_ephys
|
name: extracellular_ephys
|
||||||
description: Metadata related to extracellular electrophysiology.
|
description: Metadata related to extracellular electrophysiology.
|
||||||
range: general__extracellular_ephys
|
range: general__extracellular_ephys
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
inlined_as_list: true
|
||||||
intracellular_ephys:
|
intracellular_ephys:
|
||||||
name: intracellular_ephys
|
name: intracellular_ephys
|
||||||
description: Metadata related to intracellular electrophysiology.
|
description: Metadata related to intracellular electrophysiology.
|
||||||
range: general__intracellular_ephys
|
range: general__intracellular_ephys
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
inlined_as_list: true
|
||||||
optogenetics:
|
optogenetics:
|
||||||
name: optogenetics
|
name: optogenetics
|
||||||
description: Metadata describing optogenetic stimuluation.
|
description: Metadata describing optogenetic stimuluation.
|
||||||
|
@ -439,6 +420,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(source_script)
|
ifabsent: string(source_script)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: source_script
|
equals_string: source_script
|
||||||
|
@ -459,6 +441,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(subject)
|
ifabsent: string(subject)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: subject
|
equals_string: subject
|
||||||
|
@ -466,52 +449,36 @@ classes:
|
||||||
name: age
|
name: age
|
||||||
description: Age of subject. Can be supplied instead of 'date_of_birth'.
|
description: Age of subject. Can be supplied instead of 'date_of_birth'.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
date_of_birth:
|
date_of_birth:
|
||||||
name: date_of_birth
|
name: date_of_birth
|
||||||
description: Date of birth of subject. Can be supplied instead of 'age'.
|
description: Date of birth of subject. Can be supplied instead of 'age'.
|
||||||
range: isodatetime
|
range: isodatetime
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
description:
|
description:
|
||||||
name: description
|
name: description
|
||||||
description: Description of subject and where subject came from (e.g., breeder,
|
description: Description of subject and where subject came from (e.g., breeder,
|
||||||
if animal).
|
if animal).
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
genotype:
|
genotype:
|
||||||
name: genotype
|
name: genotype
|
||||||
description: Genetic strain. If absent, assume Wild Type (WT).
|
description: Genetic strain. If absent, assume Wild Type (WT).
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
sex:
|
sex:
|
||||||
name: sex
|
name: sex
|
||||||
description: Gender of subject.
|
description: Gender of subject.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
species:
|
species:
|
||||||
name: species
|
name: species
|
||||||
description: Species of subject.
|
description: Species of subject.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
subject_id:
|
subject_id:
|
||||||
name: subject_id
|
name: subject_id
|
||||||
description: ID of animal/person used/participating in experiment (lab convention).
|
description: ID of animal/person used/participating in experiment (lab convention).
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
weight:
|
weight:
|
||||||
name: weight
|
name: weight
|
||||||
description: Weight at time of experiment, at time of surgery and at other
|
description: Weight at time of experiment, at time of surgery and at other
|
||||||
important times.
|
important times.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
general__extracellular_ephys:
|
general__extracellular_ephys:
|
||||||
name: general__extracellular_ephys
|
name: general__extracellular_ephys
|
||||||
description: Metadata related to extracellular electrophysiology.
|
description: Metadata related to extracellular electrophysiology.
|
||||||
|
@ -519,21 +486,23 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(extracellular_ephys)
|
ifabsent: string(extracellular_ephys)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: extracellular_ephys
|
equals_string: extracellular_ephys
|
||||||
electrode_group:
|
|
||||||
name: electrode_group
|
|
||||||
description: Physical group of electrodes.
|
|
||||||
range: ElectrodeGroup
|
|
||||||
required: false
|
|
||||||
multivalued: true
|
|
||||||
electrodes:
|
electrodes:
|
||||||
name: electrodes
|
name: electrodes
|
||||||
description: A table of all electrodes (i.e. channels) used for recording.
|
description: A table of all electrodes (i.e. channels) used for recording.
|
||||||
range: extracellular_ephys__electrodes
|
range: extracellular_ephys__electrodes
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
inlined_as_list: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
description: Physical group of electrodes.
|
||||||
|
range: ElectrodeGroup
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
extracellular_ephys__electrodes:
|
extracellular_ephys__electrodes:
|
||||||
name: extracellular_ephys__electrodes
|
name: extracellular_ephys__electrodes
|
||||||
description: A table of all electrodes (i.e. channels) used for recording.
|
description: A table of all electrodes (i.e. channels) used for recording.
|
||||||
|
@ -542,6 +511,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(electrodes)
|
ifabsent: string(electrodes)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: electrodes
|
equals_string: electrodes
|
||||||
|
@ -604,9 +574,13 @@ classes:
|
||||||
group:
|
group:
|
||||||
name: group
|
name: group
|
||||||
description: Reference to the ElectrodeGroup this electrode is a part of.
|
description: Reference to the ElectrodeGroup this electrode is a part of.
|
||||||
|
array:
|
||||||
|
minimum_number_dimensions: 1
|
||||||
|
maximum_number_dimensions: false
|
||||||
range: ElectrodeGroup
|
range: ElectrodeGroup
|
||||||
required: true
|
required: true
|
||||||
multivalued: true
|
multivalued: false
|
||||||
|
inlined: true
|
||||||
group_name:
|
group_name:
|
||||||
name: group_name
|
name: group_name
|
||||||
description: Name of the ElectrodeGroup this electrode is a part of.
|
description: Name of the ElectrodeGroup this electrode is a part of.
|
||||||
|
@ -659,6 +633,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(intracellular_ephys)
|
ifabsent: string(intracellular_ephys)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: intracellular_ephys
|
equals_string: intracellular_ephys
|
||||||
|
@ -668,20 +643,19 @@ classes:
|
||||||
frequency fall-off, etc. If this changes between TimeSeries, filter description
|
frequency fall-off, etc. If this changes between TimeSeries, filter description
|
||||||
should be stored as a text attribute for each TimeSeries.
|
should be stored as a text attribute for each TimeSeries.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
intracellular_electrode:
|
|
||||||
name: intracellular_electrode
|
|
||||||
description: An intracellular electrode.
|
|
||||||
range: IntracellularElectrode
|
|
||||||
required: false
|
|
||||||
multivalued: true
|
|
||||||
sweep_table:
|
sweep_table:
|
||||||
name: sweep_table
|
name: sweep_table
|
||||||
description: The table which groups different PatchClampSeries together.
|
description: The table which groups different PatchClampSeries together.
|
||||||
range: SweepTable
|
range: SweepTable
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
inlined_as_list: false
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
description: An intracellular electrode.
|
||||||
|
range: IntracellularElectrode
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
NWBFile__intervals:
|
NWBFile__intervals:
|
||||||
name: NWBFile__intervals
|
name: NWBFile__intervals
|
||||||
description: Experimental intervals, whether that be logically distinct sub-experiments
|
description: Experimental intervals, whether that be logically distinct sub-experiments
|
||||||
|
@ -691,6 +665,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(intervals)
|
ifabsent: string(intervals)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: intervals
|
equals_string: intervals
|
||||||
|
@ -699,24 +674,25 @@ classes:
|
||||||
description: Divisions in time marking experimental stages or sub-divisions
|
description: Divisions in time marking experimental stages or sub-divisions
|
||||||
of a single recording session.
|
of a single recording session.
|
||||||
range: TimeIntervals
|
range: TimeIntervals
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
inlined_as_list: false
|
||||||
trials:
|
trials:
|
||||||
name: trials
|
name: trials
|
||||||
description: Repeated experimental events that have a logical grouping.
|
description: Repeated experimental events that have a logical grouping.
|
||||||
range: TimeIntervals
|
range: TimeIntervals
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
inlined_as_list: false
|
||||||
invalid_times:
|
invalid_times:
|
||||||
name: invalid_times
|
name: invalid_times
|
||||||
description: Time intervals that should be removed from analysis.
|
description: Time intervals that should be removed from analysis.
|
||||||
range: TimeIntervals
|
range: TimeIntervals
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
inlined_as_list: false
|
||||||
time_intervals:
|
value:
|
||||||
name: time_intervals
|
name: value
|
||||||
description: Optional additional table(s) for describing other experimental
|
description: Optional additional table(s) for describing other experimental
|
||||||
time intervals.
|
time intervals.
|
||||||
range: TimeIntervals
|
range: TimeIntervals
|
||||||
required: false
|
|
||||||
multivalued: true
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
|
|
@ -23,6 +23,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
stimulus_description:
|
stimulus_description:
|
||||||
|
@ -40,14 +41,12 @@ classes:
|
||||||
description: Recorded voltage or current.
|
description: Recorded voltage or current.
|
||||||
range: PatchClampSeries__data
|
range: PatchClampSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
gain:
|
gain:
|
||||||
name: gain
|
name: gain
|
||||||
description: Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt
|
description: Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt
|
||||||
(c-clamp).
|
(c-clamp).
|
||||||
range: float32
|
range: float32
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
electrode:
|
electrode:
|
||||||
name: electrode
|
name: electrode
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -55,7 +54,7 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: IntracellularElectrode
|
- range: IntracellularElectrode
|
||||||
- range: string
|
- range: string
|
||||||
|
@ -67,9 +66,33 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(data)
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: data
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
unit:
|
unit:
|
||||||
name: unit
|
name: unit
|
||||||
description: Base unit of measurement for working with the data. Actual stored
|
description: Base unit of measurement for working with the data. Actual stored
|
||||||
|
@ -92,32 +115,27 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
|
bias_current:
|
||||||
|
name: bias_current
|
||||||
|
description: Bias current, in amps.
|
||||||
|
range: float32
|
||||||
|
bridge_balance:
|
||||||
|
name: bridge_balance
|
||||||
|
description: Bridge balance, in ohms.
|
||||||
|
range: float32
|
||||||
|
capacitance_compensation:
|
||||||
|
name: capacitance_compensation
|
||||||
|
description: Capacitance compensation, in farads.
|
||||||
|
range: float32
|
||||||
data:
|
data:
|
||||||
name: data
|
name: data
|
||||||
description: Recorded voltage.
|
description: Recorded voltage.
|
||||||
range: CurrentClampSeries__data
|
range: CurrentClampSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
bias_current:
|
|
||||||
name: bias_current
|
|
||||||
description: Bias current, in amps.
|
|
||||||
range: float32
|
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
bridge_balance:
|
|
||||||
name: bridge_balance
|
|
||||||
description: Bridge balance, in ohms.
|
|
||||||
range: float32
|
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
capacitance_compensation:
|
|
||||||
name: capacitance_compensation
|
|
||||||
description: Capacitance compensation, in farads.
|
|
||||||
range: float32
|
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
tree_root: true
|
tree_root: true
|
||||||
CurrentClampSeries__data:
|
CurrentClampSeries__data:
|
||||||
name: CurrentClampSeries__data
|
name: CurrentClampSeries__data
|
||||||
|
@ -126,9 +144,33 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(data)
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: data
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
unit:
|
unit:
|
||||||
name: unit
|
name: unit
|
||||||
description: Base unit of measurement for working with the data. which is
|
description: Base unit of measurement for working with the data. which is
|
||||||
|
@ -140,8 +182,10 @@ classes:
|
||||||
equals_string: volts
|
equals_string: volts
|
||||||
value:
|
value:
|
||||||
name: value
|
name: value
|
||||||
range: AnyType
|
array:
|
||||||
required: true
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
range: numeric
|
||||||
IZeroClampSeries:
|
IZeroClampSeries:
|
||||||
name: IZeroClampSeries
|
name: IZeroClampSeries
|
||||||
description: Voltage data from an intracellular recording when all current and
|
description: Voltage data from an intracellular recording when all current and
|
||||||
|
@ -152,6 +196,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
bias_current:
|
bias_current:
|
||||||
|
@ -159,19 +204,16 @@ classes:
|
||||||
description: Bias current, in amps, fixed to 0.0.
|
description: Bias current, in amps, fixed to 0.0.
|
||||||
range: float32
|
range: float32
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
bridge_balance:
|
bridge_balance:
|
||||||
name: bridge_balance
|
name: bridge_balance
|
||||||
description: Bridge balance, in ohms, fixed to 0.0.
|
description: Bridge balance, in ohms, fixed to 0.0.
|
||||||
range: float32
|
range: float32
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
capacitance_compensation:
|
capacitance_compensation:
|
||||||
name: capacitance_compensation
|
name: capacitance_compensation
|
||||||
description: Capacitance compensation, in farads, fixed to 0.0.
|
description: Capacitance compensation, in farads, fixed to 0.0.
|
||||||
range: float32
|
range: float32
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
tree_root: true
|
tree_root: true
|
||||||
CurrentClampStimulusSeries:
|
CurrentClampStimulusSeries:
|
||||||
name: CurrentClampStimulusSeries
|
name: CurrentClampStimulusSeries
|
||||||
|
@ -180,6 +222,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
|
@ -187,7 +230,7 @@ classes:
|
||||||
description: Stimulus current applied.
|
description: Stimulus current applied.
|
||||||
range: CurrentClampStimulusSeries__data
|
range: CurrentClampStimulusSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
CurrentClampStimulusSeries__data:
|
CurrentClampStimulusSeries__data:
|
||||||
name: CurrentClampStimulusSeries__data
|
name: CurrentClampStimulusSeries__data
|
||||||
|
@ -196,9 +239,33 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(data)
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: data
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
unit:
|
unit:
|
||||||
name: unit
|
name: unit
|
||||||
description: Base unit of measurement for working with the data. which is
|
description: Base unit of measurement for working with the data. which is
|
||||||
|
@ -210,8 +277,10 @@ classes:
|
||||||
equals_string: amperes
|
equals_string: amperes
|
||||||
value:
|
value:
|
||||||
name: value
|
name: value
|
||||||
range: AnyType
|
array:
|
||||||
required: true
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
range: numeric
|
||||||
VoltageClampSeries:
|
VoltageClampSeries:
|
||||||
name: VoltageClampSeries
|
name: VoltageClampSeries
|
||||||
description: Current data from an intracellular voltage-clamp recording. A corresponding
|
description: Current data from an intracellular voltage-clamp recording. A corresponding
|
||||||
|
@ -221,80 +290,51 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
|
capacitance_fast:
|
||||||
|
name: capacitance_fast
|
||||||
|
description: Fast capacitance, in farads.
|
||||||
|
range: VoltageClampSeries__capacitance_fast
|
||||||
|
inlined: true
|
||||||
|
capacitance_slow:
|
||||||
|
name: capacitance_slow
|
||||||
|
description: Slow capacitance, in farads.
|
||||||
|
range: VoltageClampSeries__capacitance_slow
|
||||||
|
inlined: true
|
||||||
data:
|
data:
|
||||||
name: data
|
name: data
|
||||||
description: Recorded current.
|
description: Recorded current.
|
||||||
range: VoltageClampSeries__data
|
range: VoltageClampSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
capacitance_fast:
|
|
||||||
name: capacitance_fast
|
|
||||||
description: Fast capacitance, in farads.
|
|
||||||
range: VoltageClampSeries__capacitance_fast
|
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
capacitance_slow:
|
|
||||||
name: capacitance_slow
|
|
||||||
description: Slow capacitance, in farads.
|
|
||||||
range: VoltageClampSeries__capacitance_slow
|
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
resistance_comp_bandwidth:
|
resistance_comp_bandwidth:
|
||||||
name: resistance_comp_bandwidth
|
name: resistance_comp_bandwidth
|
||||||
description: Resistance compensation bandwidth, in hertz.
|
description: Resistance compensation bandwidth, in hertz.
|
||||||
range: VoltageClampSeries__resistance_comp_bandwidth
|
range: VoltageClampSeries__resistance_comp_bandwidth
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
resistance_comp_correction:
|
resistance_comp_correction:
|
||||||
name: resistance_comp_correction
|
name: resistance_comp_correction
|
||||||
description: Resistance compensation correction, in percent.
|
description: Resistance compensation correction, in percent.
|
||||||
range: VoltageClampSeries__resistance_comp_correction
|
range: VoltageClampSeries__resistance_comp_correction
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
resistance_comp_prediction:
|
resistance_comp_prediction:
|
||||||
name: resistance_comp_prediction
|
name: resistance_comp_prediction
|
||||||
description: Resistance compensation prediction, in percent.
|
description: Resistance compensation prediction, in percent.
|
||||||
range: VoltageClampSeries__resistance_comp_prediction
|
range: VoltageClampSeries__resistance_comp_prediction
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
whole_cell_capacitance_comp:
|
whole_cell_capacitance_comp:
|
||||||
name: whole_cell_capacitance_comp
|
name: whole_cell_capacitance_comp
|
||||||
description: Whole cell capacitance compensation, in farads.
|
description: Whole cell capacitance compensation, in farads.
|
||||||
range: VoltageClampSeries__whole_cell_capacitance_comp
|
range: VoltageClampSeries__whole_cell_capacitance_comp
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
whole_cell_series_resistance_comp:
|
whole_cell_series_resistance_comp:
|
||||||
name: whole_cell_series_resistance_comp
|
name: whole_cell_series_resistance_comp
|
||||||
description: Whole cell series resistance compensation, in ohms.
|
description: Whole cell series resistance compensation, in ohms.
|
||||||
range: VoltageClampSeries__whole_cell_series_resistance_comp
|
range: VoltageClampSeries__whole_cell_series_resistance_comp
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
tree_root: true
|
tree_root: true
|
||||||
VoltageClampSeries__data:
|
|
||||||
name: VoltageClampSeries__data
|
|
||||||
description: Recorded current.
|
|
||||||
attributes:
|
|
||||||
name:
|
|
||||||
name: name
|
|
||||||
ifabsent: string(data)
|
|
||||||
range: string
|
|
||||||
required: true
|
|
||||||
equals_string: data
|
|
||||||
unit:
|
|
||||||
name: unit
|
|
||||||
description: Base unit of measurement for working with the data. which is
|
|
||||||
fixed to 'amperes'. Actual stored values are not necessarily stored in these
|
|
||||||
units. To access the data in these units, multiply 'data' by 'conversion'.
|
|
||||||
ifabsent: string(amperes)
|
|
||||||
range: text
|
|
||||||
required: true
|
|
||||||
equals_string: amperes
|
|
||||||
value:
|
|
||||||
name: value
|
|
||||||
range: AnyType
|
|
||||||
required: true
|
|
||||||
VoltageClampSeries__capacitance_fast:
|
VoltageClampSeries__capacitance_fast:
|
||||||
name: VoltageClampSeries__capacitance_fast
|
name: VoltageClampSeries__capacitance_fast
|
||||||
description: Fast capacitance, in farads.
|
description: Fast capacitance, in farads.
|
||||||
|
@ -302,6 +342,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(capacitance_fast)
|
ifabsent: string(capacitance_fast)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: capacitance_fast
|
equals_string: capacitance_fast
|
||||||
|
@ -323,6 +364,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(capacitance_slow)
|
ifabsent: string(capacitance_slow)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: capacitance_slow
|
equals_string: capacitance_slow
|
||||||
|
@ -337,6 +379,55 @@ classes:
|
||||||
name: value
|
name: value
|
||||||
range: float32
|
range: float32
|
||||||
required: true
|
required: true
|
||||||
|
VoltageClampSeries__data:
|
||||||
|
name: VoltageClampSeries__data
|
||||||
|
description: Recorded current.
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
description: Base unit of measurement for working with the data. which is
|
||||||
|
fixed to 'amperes'. Actual stored values are not necessarily stored in these
|
||||||
|
units. To access the data in these units, multiply 'data' by 'conversion'.
|
||||||
|
ifabsent: string(amperes)
|
||||||
|
range: text
|
||||||
|
required: true
|
||||||
|
equals_string: amperes
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
range: numeric
|
||||||
VoltageClampSeries__resistance_comp_bandwidth:
|
VoltageClampSeries__resistance_comp_bandwidth:
|
||||||
name: VoltageClampSeries__resistance_comp_bandwidth
|
name: VoltageClampSeries__resistance_comp_bandwidth
|
||||||
description: Resistance compensation bandwidth, in hertz.
|
description: Resistance compensation bandwidth, in hertz.
|
||||||
|
@ -344,6 +435,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(resistance_comp_bandwidth)
|
ifabsent: string(resistance_comp_bandwidth)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: resistance_comp_bandwidth
|
equals_string: resistance_comp_bandwidth
|
||||||
|
@ -366,6 +458,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(resistance_comp_correction)
|
ifabsent: string(resistance_comp_correction)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: resistance_comp_correction
|
equals_string: resistance_comp_correction
|
||||||
|
@ -388,6 +481,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(resistance_comp_prediction)
|
ifabsent: string(resistance_comp_prediction)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: resistance_comp_prediction
|
equals_string: resistance_comp_prediction
|
||||||
|
@ -410,6 +504,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(whole_cell_capacitance_comp)
|
ifabsent: string(whole_cell_capacitance_comp)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: whole_cell_capacitance_comp
|
equals_string: whole_cell_capacitance_comp
|
||||||
|
@ -432,6 +527,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(whole_cell_series_resistance_comp)
|
ifabsent: string(whole_cell_series_resistance_comp)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: whole_cell_series_resistance_comp
|
equals_string: whole_cell_series_resistance_comp
|
||||||
|
@ -454,6 +550,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
|
@ -461,7 +558,7 @@ classes:
|
||||||
description: Stimulus voltage applied.
|
description: Stimulus voltage applied.
|
||||||
range: VoltageClampStimulusSeries__data
|
range: VoltageClampStimulusSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
VoltageClampStimulusSeries__data:
|
VoltageClampStimulusSeries__data:
|
||||||
name: VoltageClampStimulusSeries__data
|
name: VoltageClampStimulusSeries__data
|
||||||
|
@ -470,9 +567,33 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(data)
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: data
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
unit:
|
unit:
|
||||||
name: unit
|
name: unit
|
||||||
description: Base unit of measurement for working with the data. which is
|
description: Base unit of measurement for working with the data. which is
|
||||||
|
@ -484,8 +605,10 @@ classes:
|
||||||
equals_string: volts
|
equals_string: volts
|
||||||
value:
|
value:
|
||||||
name: value
|
name: value
|
||||||
range: AnyType
|
array:
|
||||||
required: true
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
range: numeric
|
||||||
IntracellularElectrode:
|
IntracellularElectrode:
|
||||||
name: IntracellularElectrode
|
name: IntracellularElectrode
|
||||||
description: An intracellular electrode and its metadata.
|
description: An intracellular electrode and its metadata.
|
||||||
|
@ -493,6 +616,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
@ -500,45 +624,32 @@ classes:
|
||||||
description: Description of electrode (e.g., whole-cell, sharp, etc.).
|
description: Description of electrode (e.g., whole-cell, sharp, etc.).
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
filtering:
|
filtering:
|
||||||
name: filtering
|
name: filtering
|
||||||
description: Electrode specific filtering.
|
description: Electrode specific filtering.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
initial_access_resistance:
|
initial_access_resistance:
|
||||||
name: initial_access_resistance
|
name: initial_access_resistance
|
||||||
description: Initial access resistance.
|
description: Initial access resistance.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
location:
|
location:
|
||||||
name: location
|
name: location
|
||||||
description: Location of the electrode. Specify the area, layer, comments
|
description: Location of the electrode. Specify the area, layer, comments
|
||||||
on estimation of area/layer, stereotaxic coordinates if in vivo, etc. Use
|
on estimation of area/layer, stereotaxic coordinates if in vivo, etc. Use
|
||||||
standard atlas names for anatomical regions when possible.
|
standard atlas names for anatomical regions when possible.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
resistance:
|
resistance:
|
||||||
name: resistance
|
name: resistance
|
||||||
description: Electrode resistance, in ohms.
|
description: Electrode resistance, in ohms.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
seal:
|
seal:
|
||||||
name: seal
|
name: seal
|
||||||
description: Information about seal used for recording.
|
description: Information about seal used for recording.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
slice:
|
slice:
|
||||||
name: slice
|
name: slice
|
||||||
description: Information about slice used for recording.
|
description: Information about slice used for recording.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
device:
|
device:
|
||||||
name: device
|
name: device
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -546,7 +657,7 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: Device
|
- range: Device
|
||||||
- range: string
|
- range: string
|
||||||
|
@ -558,23 +669,19 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
sweep_number:
|
|
||||||
name: sweep_number
|
|
||||||
description: Sweep number of the PatchClampSeries in that row.
|
|
||||||
array:
|
|
||||||
minimum_number_dimensions: 1
|
|
||||||
maximum_number_dimensions: false
|
|
||||||
range: uint32
|
|
||||||
required: true
|
|
||||||
multivalued: false
|
|
||||||
series:
|
series:
|
||||||
name: series
|
name: series
|
||||||
description: The PatchClampSeries with the sweep number in that row.
|
description: The PatchClampSeries with the sweep number in that row.
|
||||||
|
array:
|
||||||
|
minimum_number_dimensions: 1
|
||||||
|
maximum_number_dimensions: false
|
||||||
range: PatchClampSeries
|
range: PatchClampSeries
|
||||||
required: true
|
required: true
|
||||||
multivalued: true
|
multivalued: false
|
||||||
|
inlined: true
|
||||||
series_index:
|
series_index:
|
||||||
name: series_index
|
name: series_index
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -587,5 +694,14 @@ classes:
|
||||||
description: Index for series.
|
description: Index for series.
|
||||||
range: VectorIndex
|
range: VectorIndex
|
||||||
required: true
|
required: true
|
||||||
|
inlined: true
|
||||||
|
sweep_number:
|
||||||
|
name: sweep_number
|
||||||
|
description: Sweep number of the PatchClampSeries in that row.
|
||||||
|
array:
|
||||||
|
minimum_number_dimensions: 1
|
||||||
|
maximum_number_dimensions: false
|
||||||
|
range: uint32
|
||||||
|
required: true
|
||||||
multivalued: false
|
multivalued: false
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
|
|
@ -20,6 +20,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
value:
|
value:
|
||||||
|
@ -37,6 +38,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
value:
|
value:
|
||||||
|
@ -56,6 +58,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
value:
|
value:
|
||||||
|
@ -80,26 +83,14 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
name: data
|
name: data
|
||||||
description: Binary data representing images across frames.
|
description: Binary data representing images across frames.
|
||||||
range: numeric
|
range: ImageSeries__data
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
any_of:
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: frame
|
|
||||||
- alias: x
|
|
||||||
- alias: y
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: frame
|
|
||||||
- alias: x
|
|
||||||
- alias: y
|
|
||||||
- alias: z
|
|
||||||
dimension:
|
dimension:
|
||||||
name: dimension
|
name: dimension
|
||||||
description: Number of pixels on x, y, (and z) axes.
|
description: Number of pixels on x, y, (and z) axes.
|
||||||
|
@ -117,18 +108,72 @@ classes:
|
||||||
used if the image is stored in another NWB file and that file is linked
|
used if the image is stored in another NWB file and that file is linked
|
||||||
to this file.
|
to this file.
|
||||||
range: ImageSeries__external_file
|
range: ImageSeries__external_file
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
format:
|
format:
|
||||||
name: format
|
name: format
|
||||||
description: Format of image. If this is 'external', then the attribute 'external_file'
|
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
|
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
|
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.
|
this attribute is not present, then the default format='raw' case is assumed.
|
||||||
|
ifabsent: string(raw)
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
ImageSeries__data:
|
||||||
|
name: ImageSeries__data
|
||||||
|
description: Binary data representing images across frames.
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
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'.
|
||||||
|
range: text
|
||||||
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
range: numeric
|
||||||
|
any_of:
|
||||||
|
- array:
|
||||||
|
dimensions:
|
||||||
|
- alias: frame
|
||||||
|
- alias: x
|
||||||
|
- alias: y
|
||||||
|
- array:
|
||||||
|
dimensions:
|
||||||
|
- alias: frame
|
||||||
|
- alias: x
|
||||||
|
- alias: y
|
||||||
|
- alias: z
|
||||||
ImageSeries__external_file:
|
ImageSeries__external_file:
|
||||||
name: ImageSeries__external_file
|
name: ImageSeries__external_file
|
||||||
description: Paths to one or more external file(s). The field is only present
|
description: Paths to one or more external file(s). The field is only present
|
||||||
|
@ -139,6 +184,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(external_file)
|
ifabsent: string(external_file)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: external_file
|
equals_string: external_file
|
||||||
|
@ -176,6 +222,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
masked_imageseries:
|
masked_imageseries:
|
||||||
|
@ -185,7 +232,7 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: ImageSeries
|
- range: ImageSeries
|
||||||
- range: string
|
- range: string
|
||||||
|
@ -201,14 +248,13 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
distance:
|
distance:
|
||||||
name: distance
|
name: distance
|
||||||
description: Distance from camera/monitor to target/eye.
|
description: Distance from camera/monitor to target/eye.
|
||||||
range: float32
|
range: float32
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
field_of_view:
|
field_of_view:
|
||||||
name: field_of_view
|
name: field_of_view
|
||||||
description: Width, height and depth of image, or imaged area, in meters.
|
description: Width, height and depth of image, or imaged area, in meters.
|
||||||
|
@ -229,8 +275,6 @@ classes:
|
||||||
description: Description of image relative to some reference frame (e.g.,
|
description: Description of image relative to some reference frame (e.g.,
|
||||||
which way is up). Must also specify frame of reference.
|
which way is up). Must also specify frame of reference.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
tree_root: true
|
tree_root: true
|
||||||
IndexSeries:
|
IndexSeries:
|
||||||
name: IndexSeries
|
name: IndexSeries
|
||||||
|
@ -244,17 +288,15 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
name: data
|
name: data
|
||||||
description: Index of the frame in the referenced ImageSeries.
|
description: Index of the frame in the referenced ImageSeries.
|
||||||
array:
|
range: IndexSeries__data
|
||||||
dimensions:
|
|
||||||
- alias: num_times
|
|
||||||
range: int32
|
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
indexed_timeseries:
|
indexed_timeseries:
|
||||||
name: indexed_timeseries
|
name: indexed_timeseries
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -262,8 +304,55 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: ImageSeries
|
- range: ImageSeries
|
||||||
- range: string
|
- range: string
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
IndexSeries__data:
|
||||||
|
name: IndexSeries__data
|
||||||
|
description: Index of the frame in the referenced ImageSeries.
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
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'.
|
||||||
|
range: text
|
||||||
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
range: int32
|
||||||
|
|
|
@ -66,6 +66,7 @@ types:
|
||||||
numeric:
|
numeric:
|
||||||
name: numeric
|
name: numeric
|
||||||
typeof: float
|
typeof: float
|
||||||
|
repr: float | int
|
||||||
text:
|
text:
|
||||||
name: text
|
name: text
|
||||||
typeof: string
|
typeof: string
|
||||||
|
@ -87,6 +88,9 @@ types:
|
||||||
isodatetime:
|
isodatetime:
|
||||||
name: isodatetime
|
name: isodatetime
|
||||||
typeof: datetime
|
typeof: datetime
|
||||||
|
dict:
|
||||||
|
name: dict
|
||||||
|
repr: dict
|
||||||
classes:
|
classes:
|
||||||
AnyType:
|
AnyType:
|
||||||
name: AnyType
|
name: AnyType
|
||||||
|
|
|
@ -30,6 +30,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
|
@ -37,7 +38,7 @@ classes:
|
||||||
description: Values of each feature at each time.
|
description: Values of each feature at each time.
|
||||||
range: AbstractFeatureSeries__data
|
range: AbstractFeatureSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
feature_units:
|
feature_units:
|
||||||
name: feature_units
|
name: feature_units
|
||||||
description: Units of each feature.
|
description: Units of each feature.
|
||||||
|
@ -64,9 +65,33 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(data)
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: data
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
unit:
|
unit:
|
||||||
name: unit
|
name: unit
|
||||||
description: Since there can be different units for different features, store
|
description: Since there can be different units for different features, store
|
||||||
|
@ -96,18 +121,63 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
name: data
|
name: data
|
||||||
description: Annotations made during an experiment.
|
description: Annotations made during an experiment.
|
||||||
|
range: AnnotationSeries__data
|
||||||
|
required: true
|
||||||
|
inlined: true
|
||||||
|
tree_root: true
|
||||||
|
AnnotationSeries__data:
|
||||||
|
name: AnnotationSeries__data
|
||||||
|
description: Annotations made during an experiment.
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data. Annotations
|
||||||
|
have no units, so the value is fixed to -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: true
|
||||||
|
equals_number: -1
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
description: Base unit of measurement for working with the data. Annotations
|
||||||
|
have no units, so the value is fixed to 'n/a'.
|
||||||
|
ifabsent: string(n/a)
|
||||||
|
range: text
|
||||||
|
required: true
|
||||||
|
equals_string: n/a
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
array:
|
array:
|
||||||
dimensions:
|
dimensions:
|
||||||
- alias: num_times
|
- alias: num_times
|
||||||
range: text
|
range: text
|
||||||
required: true
|
|
||||||
multivalued: false
|
|
||||||
tree_root: true
|
|
||||||
IntervalSeries:
|
IntervalSeries:
|
||||||
name: IntervalSeries
|
name: IntervalSeries
|
||||||
description: Stores intervals of data. The timestamps field stores the beginning
|
description: Stores intervals of data. The timestamps field stores the beginning
|
||||||
|
@ -121,18 +191,63 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
name: data
|
name: data
|
||||||
description: Use values >0 if interval started, <0 if interval ended.
|
description: Use values >0 if interval started, <0 if interval ended.
|
||||||
|
range: IntervalSeries__data
|
||||||
|
required: true
|
||||||
|
inlined: true
|
||||||
|
tree_root: true
|
||||||
|
IntervalSeries__data:
|
||||||
|
name: IntervalSeries__data
|
||||||
|
description: Use values >0 if interval started, <0 if interval ended.
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data. Annotations
|
||||||
|
have no units, so the value is fixed to -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: true
|
||||||
|
equals_number: -1
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
description: Base unit of measurement for working with the data. Annotations
|
||||||
|
have no units, so the value is fixed to 'n/a'.
|
||||||
|
ifabsent: string(n/a)
|
||||||
|
range: text
|
||||||
|
required: true
|
||||||
|
equals_string: n/a
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
array:
|
array:
|
||||||
dimensions:
|
dimensions:
|
||||||
- alias: num_times
|
- alias: num_times
|
||||||
range: int8
|
range: int8
|
||||||
required: true
|
|
||||||
multivalued: false
|
|
||||||
tree_root: true
|
|
||||||
DecompositionSeries:
|
DecompositionSeries:
|
||||||
name: DecompositionSeries
|
name: DecompositionSeries
|
||||||
description: Spectral analysis of a time series, e.g. of an LFP or a speech signal.
|
description: Spectral analysis of a time series, e.g. of an LFP or a speech signal.
|
||||||
|
@ -140,6 +255,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
|
@ -147,28 +263,27 @@ classes:
|
||||||
description: Data decomposed into frequency bands.
|
description: Data decomposed into frequency bands.
|
||||||
range: DecompositionSeries__data
|
range: DecompositionSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
metric:
|
metric:
|
||||||
name: metric
|
name: metric
|
||||||
description: The metric used, e.g. phase, amplitude, power.
|
description: The metric used, e.g. phase, amplitude, power.
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
bands:
|
bands:
|
||||||
name: bands
|
name: bands
|
||||||
description: Table for describing the bands that this series was generated
|
description: Table for describing the bands that this series was generated
|
||||||
from. There should be one row in this table for each band.
|
from. There should be one row in this table for each band.
|
||||||
range: DecompositionSeries__bands
|
range: DecompositionSeries__bands
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
|
inlined_as_list: true
|
||||||
source_timeseries:
|
source_timeseries:
|
||||||
name: source_timeseries
|
name: source_timeseries
|
||||||
annotations:
|
annotations:
|
||||||
source_type:
|
source_type:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
any_of:
|
any_of:
|
||||||
- range: TimeSeries
|
- range: TimeSeries
|
||||||
- range: string
|
- range: string
|
||||||
|
@ -180,9 +295,33 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(data)
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: data
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
unit:
|
unit:
|
||||||
name: unit
|
name: unit
|
||||||
description: Base unit of measurement for working with the data. Actual stored
|
description: Base unit of measurement for working with the data. Actual stored
|
||||||
|
@ -208,6 +347,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(bands)
|
ifabsent: string(bands)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: bands
|
equals_string: bands
|
||||||
|
@ -259,10 +399,21 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(Units)
|
ifabsent: string(Units)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
spike_times_index:
|
electrode_group:
|
||||||
name: spike_times_index
|
name: electrode_group
|
||||||
|
description: Electrode group that each spike unit came from.
|
||||||
|
array:
|
||||||
|
minimum_number_dimensions: 1
|
||||||
|
maximum_number_dimensions: false
|
||||||
|
range: ElectrodeGroup
|
||||||
|
required: false
|
||||||
|
multivalued: false
|
||||||
|
inlined: true
|
||||||
|
electrodes:
|
||||||
|
name: electrodes
|
||||||
annotations:
|
annotations:
|
||||||
named:
|
named:
|
||||||
tag: named
|
tag: named
|
||||||
|
@ -270,14 +421,30 @@ classes:
|
||||||
source_type:
|
source_type:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: neurodata_type_inc
|
value: neurodata_type_inc
|
||||||
description: Index into the spike_times dataset.
|
description: Electrode that each spike unit came from, specified using a DynamicTableRegion.
|
||||||
|
range: DynamicTableRegion
|
||||||
|
inlined: true
|
||||||
|
electrodes_index:
|
||||||
|
name: electrodes_index
|
||||||
|
annotations:
|
||||||
|
named:
|
||||||
|
tag: named
|
||||||
|
value: true
|
||||||
|
source_type:
|
||||||
|
tag: source_type
|
||||||
|
value: neurodata_type_inc
|
||||||
|
description: Index into electrodes.
|
||||||
range: VectorIndex
|
range: VectorIndex
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
obs_intervals:
|
||||||
spike_times:
|
name: obs_intervals
|
||||||
name: spike_times
|
description: Observation intervals for each unit.
|
||||||
description: Spike times for each unit.
|
array:
|
||||||
range: Units__spike_times
|
dimensions:
|
||||||
|
- alias: num_intervals
|
||||||
|
- alias: start_end
|
||||||
|
exact_cardinality: 2
|
||||||
|
range: float64
|
||||||
required: false
|
required: false
|
||||||
multivalued: false
|
multivalued: false
|
||||||
obs_intervals_index:
|
obs_intervals_index:
|
||||||
|
@ -291,21 +458,14 @@ classes:
|
||||||
value: neurodata_type_inc
|
value: neurodata_type_inc
|
||||||
description: Index into the obs_intervals dataset.
|
description: Index into the obs_intervals dataset.
|
||||||
range: VectorIndex
|
range: VectorIndex
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
spike_times:
|
||||||
obs_intervals:
|
name: spike_times
|
||||||
name: obs_intervals
|
description: Spike times for each unit.
|
||||||
description: Observation intervals for each unit.
|
range: Units__spike_times
|
||||||
array:
|
inlined: true
|
||||||
dimensions:
|
spike_times_index:
|
||||||
- alias: num_intervals
|
name: spike_times_index
|
||||||
- alias: start_end
|
|
||||||
exact_cardinality: 2
|
|
||||||
range: float64
|
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
electrodes_index:
|
|
||||||
name: electrodes_index
|
|
||||||
annotations:
|
annotations:
|
||||||
named:
|
named:
|
||||||
tag: named
|
tag: named
|
||||||
|
@ -313,61 +473,19 @@ classes:
|
||||||
source_type:
|
source_type:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: neurodata_type_inc
|
value: neurodata_type_inc
|
||||||
description: Index into electrodes.
|
description: Index into the spike_times dataset.
|
||||||
range: VectorIndex
|
range: VectorIndex
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
electrodes:
|
|
||||||
name: electrodes
|
|
||||||
annotations:
|
|
||||||
named:
|
|
||||||
tag: named
|
|
||||||
value: true
|
|
||||||
source_type:
|
|
||||||
tag: source_type
|
|
||||||
value: neurodata_type_inc
|
|
||||||
description: Electrode that each spike unit came from, specified using a DynamicTableRegion.
|
|
||||||
range: DynamicTableRegion
|
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
electrode_group:
|
|
||||||
name: electrode_group
|
|
||||||
description: Electrode group that each spike unit came from.
|
|
||||||
range: ElectrodeGroup
|
|
||||||
required: false
|
|
||||||
multivalued: true
|
|
||||||
waveform_mean:
|
waveform_mean:
|
||||||
name: waveform_mean
|
name: waveform_mean
|
||||||
description: Spike waveform mean for each spike unit.
|
description: Spike waveform mean for each spike unit.
|
||||||
range: float32
|
range: Units__waveform_mean
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
any_of:
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_units
|
|
||||||
- alias: num_samples
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_units
|
|
||||||
- alias: num_samples
|
|
||||||
- alias: num_electrodes
|
|
||||||
waveform_sd:
|
waveform_sd:
|
||||||
name: waveform_sd
|
name: waveform_sd
|
||||||
description: Spike waveform standard deviation for each spike unit.
|
description: Spike waveform standard deviation for each spike unit.
|
||||||
range: float32
|
range: Units__waveform_sd
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
any_of:
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_units
|
|
||||||
- alias: num_samples
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_units
|
|
||||||
- alias: num_samples
|
|
||||||
- alias: num_electrodes
|
|
||||||
tree_root: true
|
tree_root: true
|
||||||
Units__spike_times:
|
Units__spike_times:
|
||||||
name: Units__spike_times
|
name: Units__spike_times
|
||||||
|
@ -377,6 +495,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(spike_times)
|
ifabsent: string(spike_times)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: spike_times
|
equals_string: spike_times
|
||||||
|
@ -389,3 +508,51 @@ classes:
|
||||||
for the spike time to be between samples.
|
for the spike time to be between samples.
|
||||||
range: float64
|
range: float64
|
||||||
required: false
|
required: false
|
||||||
|
Units__waveform_mean:
|
||||||
|
name: Units__waveform_mean
|
||||||
|
description: Spike waveform mean for each spike unit.
|
||||||
|
is_a: VectorData
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(waveform_mean)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: waveform_mean
|
||||||
|
sampling_rate:
|
||||||
|
name: sampling_rate
|
||||||
|
description: Sampling rate, in hertz.
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
description: Unit of measurement. This value is fixed to 'volts'.
|
||||||
|
ifabsent: string(volts)
|
||||||
|
range: text
|
||||||
|
required: false
|
||||||
|
equals_string: volts
|
||||||
|
Units__waveform_sd:
|
||||||
|
name: Units__waveform_sd
|
||||||
|
description: Spike waveform standard deviation for each spike unit.
|
||||||
|
is_a: VectorData
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(waveform_sd)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: waveform_sd
|
||||||
|
sampling_rate:
|
||||||
|
name: sampling_rate
|
||||||
|
description: Sampling rate, in hertz.
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
description: Unit of measurement. This value is fixed to 'volts'.
|
||||||
|
ifabsent: string(volts)
|
||||||
|
range: text
|
||||||
|
required: false
|
||||||
|
equals_string: volts
|
||||||
|
|
|
@ -21,17 +21,15 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
name: data
|
name: data
|
||||||
description: Applied power for optogenetic stimulus, in watts.
|
description: Applied power for optogenetic stimulus, in watts.
|
||||||
array:
|
range: OptogeneticSeries__data
|
||||||
dimensions:
|
|
||||||
- alias: num_times
|
|
||||||
range: numeric
|
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
site:
|
site:
|
||||||
name: site
|
name: site
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -39,11 +37,58 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: OptogeneticStimulusSite
|
- range: OptogeneticStimulusSite
|
||||||
- range: string
|
- range: string
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
OptogeneticSeries__data:
|
||||||
|
name: OptogeneticSeries__data
|
||||||
|
description: Applied power for optogenetic stimulus, in watts.
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
description: Unit of measurement for data, which is fixed to 'watts'.
|
||||||
|
ifabsent: string(watts)
|
||||||
|
range: text
|
||||||
|
required: true
|
||||||
|
equals_string: watts
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
range: numeric
|
||||||
OptogeneticStimulusSite:
|
OptogeneticStimulusSite:
|
||||||
name: OptogeneticStimulusSite
|
name: OptogeneticStimulusSite
|
||||||
description: A site of optogenetic stimulation.
|
description: A site of optogenetic stimulation.
|
||||||
|
@ -51,6 +96,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
@ -58,13 +104,11 @@ classes:
|
||||||
description: Description of stimulation site.
|
description: Description of stimulation site.
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
excitation_lambda:
|
excitation_lambda:
|
||||||
name: excitation_lambda
|
name: excitation_lambda
|
||||||
description: Excitation wavelength, in nm.
|
description: Excitation wavelength, in nm.
|
||||||
range: float32
|
range: float32
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
location:
|
location:
|
||||||
name: location
|
name: location
|
||||||
description: Location of the stimulation site. Specify the area, layer, comments
|
description: Location of the stimulation site. Specify the area, layer, comments
|
||||||
|
@ -72,7 +116,6 @@ classes:
|
||||||
standard atlas names for anatomical regions when possible.
|
standard atlas names for anatomical regions when possible.
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
device:
|
device:
|
||||||
name: device
|
name: device
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -80,7 +123,7 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: Device
|
- range: Device
|
||||||
- range: string
|
- range: string
|
||||||
|
|
|
@ -23,6 +23,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
pmt_gain:
|
pmt_gain:
|
||||||
|
@ -59,7 +60,7 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: ImagingPlane
|
- range: ImagingPlane
|
||||||
- range: string
|
- range: string
|
||||||
|
@ -72,22 +73,15 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
name: data
|
name: data
|
||||||
description: Signals from ROIs.
|
description: Signals from ROIs.
|
||||||
range: numeric
|
range: RoiResponseSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_times
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_times
|
|
||||||
- alias: num_rois
|
|
||||||
rois:
|
rois:
|
||||||
name: rois
|
name: rois
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -101,8 +95,60 @@ classes:
|
||||||
on the ROIs stored in this timeseries.
|
on the ROIs stored in this timeseries.
|
||||||
range: DynamicTableRegion
|
range: DynamicTableRegion
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
RoiResponseSeries__data:
|
||||||
|
name: RoiResponseSeries__data
|
||||||
|
description: Signals from ROIs.
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
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'.
|
||||||
|
range: text
|
||||||
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
range: numeric
|
||||||
|
any_of:
|
||||||
|
- array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
- array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
- alias: num_rois
|
||||||
DfOverF:
|
DfOverF:
|
||||||
name: DfOverF
|
name: DfOverF
|
||||||
description: dF/F information about a region of interest (ROI). Storage hierarchy
|
description: dF/F information about a region of interest (ROI). Storage hierarchy
|
||||||
|
@ -110,12 +156,19 @@ classes:
|
||||||
for image planes).
|
for image planes).
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(DfOverF)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: RoiResponseSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: RoiResponseSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
Fluorescence:
|
Fluorescence:
|
||||||
name: Fluorescence
|
name: Fluorescence
|
||||||
|
@ -124,12 +177,19 @@ classes:
|
||||||
for ROIs and for image planes).
|
for ROIs and for image planes).
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(Fluorescence)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: RoiResponseSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: RoiResponseSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
ImageSegmentation:
|
ImageSegmentation:
|
||||||
name: ImageSegmentation
|
name: ImageSegmentation
|
||||||
|
@ -142,12 +202,19 @@ classes:
|
||||||
is required and ROI names should remain consistent between them.
|
is required and ROI names should remain consistent between them.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(ImageSegmentation)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: DynamicTable
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: DynamicTable
|
||||||
tree_root: true
|
tree_root: true
|
||||||
ImagingPlane:
|
ImagingPlane:
|
||||||
name: ImagingPlane
|
name: ImagingPlane
|
||||||
|
@ -156,32 +223,28 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
name: description
|
name: description
|
||||||
description: Description of the imaging plane.
|
description: Description of the imaging plane.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
excitation_lambda:
|
excitation_lambda:
|
||||||
name: excitation_lambda
|
name: excitation_lambda
|
||||||
description: Excitation wavelength, in nm.
|
description: Excitation wavelength, in nm.
|
||||||
range: float32
|
range: float32
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
imaging_rate:
|
imaging_rate:
|
||||||
name: imaging_rate
|
name: imaging_rate
|
||||||
description: Rate that images are acquired, in Hz.
|
description: Rate that images are acquired, in Hz.
|
||||||
range: float32
|
range: float32
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
indicator:
|
indicator:
|
||||||
name: indicator
|
name: indicator
|
||||||
description: Calcium indicator.
|
description: Calcium indicator.
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
location:
|
location:
|
||||||
name: location
|
name: location
|
||||||
description: Location of the imaging plane. Specify the area, layer, comments
|
description: Location of the imaging plane. Specify the area, layer, comments
|
||||||
|
@ -189,31 +252,27 @@ classes:
|
||||||
standard atlas names for anatomical regions when possible.
|
standard atlas names for anatomical regions when possible.
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
manifold:
|
manifold:
|
||||||
name: manifold
|
name: manifold
|
||||||
description: DEPRECATED Physical position of each pixel. 'xyz' represents
|
description: DEPRECATED Physical position of each pixel. 'xyz' represents
|
||||||
the position of the pixel relative to the defined coordinate space. Deprecated
|
the position of the pixel relative to the defined coordinate space. Deprecated
|
||||||
in favor of origin_coords and grid_spacing.
|
in favor of origin_coords and grid_spacing.
|
||||||
range: ImagingPlane__manifold
|
range: ImagingPlane__manifold
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
origin_coords:
|
origin_coords:
|
||||||
name: origin_coords
|
name: origin_coords
|
||||||
description: Physical location of the first element of the imaging plane (0,
|
description: Physical location of the first element of the imaging plane (0,
|
||||||
0) for 2-D data or (0, 0, 0) for 3-D data. See also reference_frame for
|
0) for 2-D data or (0, 0, 0) for 3-D data. See also reference_frame for
|
||||||
what the physical location is relative to (e.g., bregma).
|
what the physical location is relative to (e.g., bregma).
|
||||||
range: ImagingPlane__origin_coords
|
range: ImagingPlane__origin_coords
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
grid_spacing:
|
grid_spacing:
|
||||||
name: grid_spacing
|
name: grid_spacing
|
||||||
description: Space between pixels in (x, y) or voxels in (x, y, z) directions,
|
description: Space between pixels in (x, y) or voxels in (x, y, z) directions,
|
||||||
in the specified unit. Assumes imaging plane is a regular grid. See also
|
in the specified unit. Assumes imaging plane is a regular grid. See also
|
||||||
reference_frame to interpret the grid.
|
reference_frame to interpret the grid.
|
||||||
range: ImagingPlane__grid_spacing
|
range: ImagingPlane__grid_spacing
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
reference_frame:
|
reference_frame:
|
||||||
name: reference_frame
|
name: reference_frame
|
||||||
description: Describes reference frame of origin_coords and grid_spacing.
|
description: Describes reference frame of origin_coords and grid_spacing.
|
||||||
|
@ -234,14 +293,13 @@ classes:
|
||||||
axis (larger index = more rightward). Third dimension corresponds to dorsal-ventral
|
axis (larger index = more rightward). Third dimension corresponds to dorsal-ventral
|
||||||
axis (larger index = more ventral)."
|
axis (larger index = more ventral)."
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
optical_channel:
|
optical_channel:
|
||||||
name: optical_channel
|
name: optical_channel
|
||||||
description: An optical channel used to record from an imaging plane.
|
description: An optical channel used to record from an imaging plane.
|
||||||
range: OpticalChannel
|
range: OpticalChannel
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
|
inlined_as_list: true
|
||||||
device:
|
device:
|
||||||
name: device
|
name: device
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -249,7 +307,7 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: Device
|
- range: Device
|
||||||
- range: string
|
- range: string
|
||||||
|
@ -263,6 +321,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(manifold)
|
ifabsent: string(manifold)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: manifold
|
equals_string: manifold
|
||||||
|
@ -312,6 +371,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(origin_coords)
|
ifabsent: string(origin_coords)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: origin_coords
|
equals_string: origin_coords
|
||||||
|
@ -339,6 +399,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(grid_spacing)
|
ifabsent: string(grid_spacing)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: grid_spacing
|
equals_string: grid_spacing
|
||||||
|
@ -364,6 +425,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
@ -371,13 +433,11 @@ classes:
|
||||||
description: Description or other notes about the channel.
|
description: Description or other notes about the channel.
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
emission_lambda:
|
emission_lambda:
|
||||||
name: emission_lambda
|
name: emission_lambda
|
||||||
description: Emission wavelength for channel, in nm.
|
description: Emission wavelength for channel, in nm.
|
||||||
range: float32
|
range: float32
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
MotionCorrection:
|
MotionCorrection:
|
||||||
name: MotionCorrection
|
name: MotionCorrection
|
||||||
description: 'An image stack where all frames are shifted (registered) to a common
|
description: 'An image stack where all frames are shifted (registered) to a common
|
||||||
|
@ -385,10 +445,17 @@ classes:
|
||||||
frame at each point in time is assumed to be 2-D (has only x & y dimensions).'
|
frame at each point in time is assumed to be 2-D (has only x & y dimensions).'
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(MotionCorrection)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: NWBDataInterface
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: NWBDataInterface
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
|
|
@ -21,6 +21,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
dimension:
|
dimension:
|
||||||
|
@ -52,6 +53,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
unit:
|
unit:
|
||||||
|
@ -75,6 +77,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
bits_per_pixel:
|
bits_per_pixel:
|
||||||
|
@ -115,6 +118,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(ImagingRetinotopy)
|
ifabsent: string(ImagingRetinotopy)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
axis_1_phase_map:
|
axis_1_phase_map:
|
||||||
|
@ -129,7 +133,7 @@ classes:
|
||||||
description: Phase response to stimulus on the first measured axis.
|
description: Phase response to stimulus on the first measured axis.
|
||||||
range: AxisMap
|
range: AxisMap
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
axis_1_power_map:
|
axis_1_power_map:
|
||||||
name: axis_1_power_map
|
name: axis_1_power_map
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -142,8 +146,7 @@ classes:
|
||||||
description: Power response on the first measured axis. Response is scaled
|
description: Power response on the first measured axis. Response is scaled
|
||||||
so 0.0 is no power in the response and 1.0 is maximum relative power.
|
so 0.0 is no power in the response and 1.0 is maximum relative power.
|
||||||
range: AxisMap
|
range: AxisMap
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
axis_2_phase_map:
|
axis_2_phase_map:
|
||||||
name: axis_2_phase_map
|
name: axis_2_phase_map
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -156,7 +159,7 @@ classes:
|
||||||
description: Phase response to stimulus on the second measured axis.
|
description: Phase response to stimulus on the second measured axis.
|
||||||
range: AxisMap
|
range: AxisMap
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
axis_2_power_map:
|
axis_2_power_map:
|
||||||
name: axis_2_power_map
|
name: axis_2_power_map
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -168,8 +171,7 @@ classes:
|
||||||
value: neurodata_type_inc
|
value: neurodata_type_inc
|
||||||
description: Power response to stimulus on the second measured axis.
|
description: Power response to stimulus on the second measured axis.
|
||||||
range: AxisMap
|
range: AxisMap
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
sign_map:
|
sign_map:
|
||||||
name: sign_map
|
name: sign_map
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -183,7 +185,7 @@ classes:
|
||||||
and axis_2.
|
and axis_2.
|
||||||
range: RetinotopyMap
|
range: RetinotopyMap
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
axis_descriptions:
|
axis_descriptions:
|
||||||
name: axis_descriptions
|
name: axis_descriptions
|
||||||
description: Two-element array describing the contents of the two response
|
description: Two-element array describing the contents of the two response
|
||||||
|
@ -202,7 +204,7 @@ classes:
|
||||||
focal depth, wavelength) as data collection. Array format: [rows][columns].'
|
focal depth, wavelength) as data collection. Array format: [rows][columns].'
|
||||||
range: ImagingRetinotopy__focal_depth_image
|
range: ImagingRetinotopy__focal_depth_image
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
vasculature_image:
|
vasculature_image:
|
||||||
name: vasculature_image
|
name: vasculature_image
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -216,7 +218,7 @@ classes:
|
||||||
[rows][columns]'
|
[rows][columns]'
|
||||||
range: RetinotopyImage
|
range: RetinotopyImage
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
ImagingRetinotopy__focal_depth_image:
|
ImagingRetinotopy__focal_depth_image:
|
||||||
name: ImagingRetinotopy__focal_depth_image
|
name: ImagingRetinotopy__focal_depth_image
|
||||||
|
@ -227,6 +229,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(focal_depth_image)
|
ifabsent: string(focal_depth_image)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: focal_depth_image
|
equals_string: focal_depth_image
|
||||||
|
|
|
@ -20,6 +20,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
@ -32,6 +33,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
resolution:
|
resolution:
|
||||||
|
@ -73,6 +75,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
@ -84,6 +87,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
@ -94,6 +98,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
@ -118,15 +123,14 @@ classes:
|
||||||
external file.
|
external file.
|
||||||
range: TimeSeries__data
|
range: TimeSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
starting_time:
|
starting_time:
|
||||||
name: starting_time
|
name: starting_time
|
||||||
description: Timestamp of the first sample in seconds. When timestamps are
|
description: Timestamp of the first sample in seconds. When timestamps are
|
||||||
uniformly spaced, the timestamp of the first sample can be specified and
|
uniformly spaced, the timestamp of the first sample can be specified and
|
||||||
all subsequent ones calculated from the sampling rate attribute.
|
all subsequent ones calculated from the sampling rate attribute.
|
||||||
range: TimeSeries__starting_time
|
range: TimeSeries__starting_time
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
timestamps:
|
timestamps:
|
||||||
name: timestamps
|
name: timestamps
|
||||||
description: Timestamps for samples stored in data, in seconds, relative to
|
description: Timestamps for samples stored in data, in seconds, relative to
|
||||||
|
@ -168,8 +172,8 @@ classes:
|
||||||
external to the NWB file, in files storing raw data. Once timestamp data
|
external to the NWB file, in files storing raw data. Once timestamp data
|
||||||
is calculated, the contents of 'sync' are mostly for archival purposes.
|
is calculated, the contents of 'sync' are mostly for archival purposes.
|
||||||
range: TimeSeries__sync
|
range: TimeSeries__sync
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
inlined_as_list: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
TimeSeries__data:
|
TimeSeries__data:
|
||||||
name: TimeSeries__data
|
name: TimeSeries__data
|
||||||
|
@ -180,6 +184,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(data)
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: data
|
equals_string: data
|
||||||
|
@ -244,6 +249,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(starting_time)
|
ifabsent: string(starting_time)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: starting_time
|
equals_string: starting_time
|
||||||
|
@ -275,6 +281,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(sync)
|
ifabsent: string(sync)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: sync
|
equals_string: sync
|
||||||
|
@ -283,13 +290,24 @@ classes:
|
||||||
description: A collection of processed data.
|
description: A collection of processed data.
|
||||||
is_a: NWBContainer
|
is_a: NWBContainer
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
identifier: true
|
||||||
inlined_as_list: false
|
range: string
|
||||||
any_of:
|
required: true
|
||||||
- range: NWBDataInterface
|
description:
|
||||||
- range: DynamicTable
|
name: description
|
||||||
|
description: Description of this collection of processed data.
|
||||||
|
range: text
|
||||||
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: NWBDataInterface
|
||||||
|
- range: DynamicTable
|
||||||
tree_root: true
|
tree_root: true
|
||||||
Images:
|
Images:
|
||||||
name: Images
|
name: Images
|
||||||
|
@ -299,6 +317,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(Images)
|
ifabsent: string(Images)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -29,6 +29,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
|
@ -37,13 +38,11 @@ classes:
|
||||||
reference frame.
|
reference frame.
|
||||||
range: SpatialSeries__data
|
range: SpatialSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
reference_frame:
|
reference_frame:
|
||||||
name: reference_frame
|
name: reference_frame
|
||||||
description: Description defining what exactly 'straight-ahead' means.
|
description: Description defining what exactly 'straight-ahead' means.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
tree_root: true
|
tree_root: true
|
||||||
SpatialSeries__data:
|
SpatialSeries__data:
|
||||||
name: SpatialSeries__data
|
name: SpatialSeries__data
|
||||||
|
@ -53,9 +52,33 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(data)
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: data
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
unit:
|
unit:
|
||||||
name: unit
|
name: unit
|
||||||
description: Base unit of measurement for working with the data. The default
|
description: Base unit of measurement for working with the data. The default
|
||||||
|
@ -91,12 +114,19 @@ classes:
|
||||||
events. BehavioralTimeSeries is for continuous data.
|
events. BehavioralTimeSeries is for continuous data.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(BehavioralEpochs)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: IntervalSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: IntervalSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
BehavioralEvents:
|
BehavioralEvents:
|
||||||
name: BehavioralEvents
|
name: BehavioralEvents
|
||||||
|
@ -104,12 +134,19 @@ classes:
|
||||||
for more details.
|
for more details.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(BehavioralEvents)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: TimeSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: TimeSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
BehavioralTimeSeries:
|
BehavioralTimeSeries:
|
||||||
name: BehavioralTimeSeries
|
name: BehavioralTimeSeries
|
||||||
|
@ -117,36 +154,57 @@ classes:
|
||||||
of <a href="#BehavioralEpochs">BehavioralEpochs</a> for more details.
|
of <a href="#BehavioralEpochs">BehavioralEpochs</a> for more details.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(BehavioralTimeSeries)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: TimeSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: TimeSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
PupilTracking:
|
PupilTracking:
|
||||||
name: PupilTracking
|
name: PupilTracking
|
||||||
description: Eye-tracking data, representing pupil size.
|
description: Eye-tracking data, representing pupil size.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(PupilTracking)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: TimeSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: TimeSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
EyeTracking:
|
EyeTracking:
|
||||||
name: EyeTracking
|
name: EyeTracking
|
||||||
description: Eye-tracking data, representing direction of gaze.
|
description: Eye-tracking data, representing direction of gaze.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(EyeTracking)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: SpatialSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: SpatialSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
CompassDirection:
|
CompassDirection:
|
||||||
name: CompassDirection
|
name: CompassDirection
|
||||||
|
@ -157,22 +215,36 @@ classes:
|
||||||
be radians or degrees.
|
be radians or degrees.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(CompassDirection)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: SpatialSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: SpatialSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
Position:
|
Position:
|
||||||
name: Position
|
name: Position
|
||||||
description: Position data, whether along the x, x/y or x/y/z axis.
|
description: Position data, whether along the x, x/y or x/y/z axis.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(Position)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: SpatialSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: SpatialSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
|
|
@ -21,6 +21,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -25,41 +25,9 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
|
||||||
name: data
|
|
||||||
description: Recorded voltage data.
|
|
||||||
range: numeric
|
|
||||||
required: true
|
|
||||||
multivalued: false
|
|
||||||
any_of:
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_times
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_times
|
|
||||||
- alias: num_channels
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_times
|
|
||||||
- alias: num_channels
|
|
||||||
- alias: num_samples
|
|
||||||
electrodes:
|
|
||||||
name: electrodes
|
|
||||||
annotations:
|
|
||||||
named:
|
|
||||||
tag: named
|
|
||||||
value: true
|
|
||||||
source_type:
|
|
||||||
tag: source_type
|
|
||||||
value: neurodata_type_inc
|
|
||||||
description: DynamicTableRegion pointer to the electrodes that this time series
|
|
||||||
was generated from.
|
|
||||||
range: DynamicTableRegion
|
|
||||||
required: true
|
|
||||||
multivalued: false
|
|
||||||
channel_conversion:
|
channel_conversion:
|
||||||
name: channel_conversion
|
name: channel_conversion
|
||||||
description: Channel-specific conversion factor. Multiply the data in the
|
description: Channel-specific conversion factor. Multiply the data in the
|
||||||
|
@ -77,7 +45,87 @@ classes:
|
||||||
range: float32
|
range: float32
|
||||||
required: false
|
required: false
|
||||||
multivalued: false
|
multivalued: false
|
||||||
|
data:
|
||||||
|
name: data
|
||||||
|
description: Recorded voltage data.
|
||||||
|
range: ElectricalSeries__data
|
||||||
|
required: true
|
||||||
|
inlined: true
|
||||||
|
electrodes:
|
||||||
|
name: electrodes
|
||||||
|
annotations:
|
||||||
|
named:
|
||||||
|
tag: named
|
||||||
|
value: true
|
||||||
|
source_type:
|
||||||
|
tag: source_type
|
||||||
|
value: neurodata_type_inc
|
||||||
|
description: DynamicTableRegion pointer to the electrodes that this time series
|
||||||
|
was generated from.
|
||||||
|
range: DynamicTableRegion
|
||||||
|
required: true
|
||||||
|
inlined: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
ElectricalSeries__data:
|
||||||
|
name: ElectricalSeries__data
|
||||||
|
description: Recorded voltage data.
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
description: Base unit of measurement for working with the data. This value
|
||||||
|
is fixed to 'volts'. Actual stored values are not necessarily stored in
|
||||||
|
these units. To access the data in these units, multiply 'data' by 'conversion'
|
||||||
|
and 'channel_conversion' (if present).
|
||||||
|
ifabsent: string(volts)
|
||||||
|
range: text
|
||||||
|
required: true
|
||||||
|
equals_string: volts
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
range: numeric
|
||||||
|
any_of:
|
||||||
|
- array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
- array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
- alias: num_channels
|
||||||
|
- array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
- alias: num_channels
|
||||||
|
- alias: num_samples
|
||||||
SpikeEventSeries:
|
SpikeEventSeries:
|
||||||
name: SpikeEventSeries
|
name: SpikeEventSeries
|
||||||
description: 'Stores snapshots/snippets of recorded spike events (i.e., threshold
|
description: 'Stores snapshots/snippets of recorded spike events (i.e., threshold
|
||||||
|
@ -92,24 +140,15 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
name: data
|
name: data
|
||||||
description: Spike waveforms.
|
description: Spike waveforms.
|
||||||
range: numeric
|
range: SpikeEventSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_events
|
|
||||||
- alias: num_samples
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_events
|
|
||||||
- alias: num_channels
|
|
||||||
- alias: num_samples
|
|
||||||
timestamps:
|
timestamps:
|
||||||
name: timestamps
|
name: timestamps
|
||||||
description: Timestamps for samples stored in data, in seconds, relative to
|
description: Timestamps for samples stored in data, in seconds, relative to
|
||||||
|
@ -123,6 +162,60 @@ classes:
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
multivalued: false
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
SpikeEventSeries__data:
|
||||||
|
name: SpikeEventSeries__data
|
||||||
|
description: Spike waveforms.
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
description: Unit of measurement for waveforms, which is fixed to 'volts'.
|
||||||
|
ifabsent: string(volts)
|
||||||
|
range: text
|
||||||
|
required: true
|
||||||
|
equals_string: volts
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
range: numeric
|
||||||
|
any_of:
|
||||||
|
- array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_events
|
||||||
|
- alias: num_samples
|
||||||
|
- array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_events
|
||||||
|
- alias: num_channels
|
||||||
|
- alias: num_samples
|
||||||
FeatureExtraction:
|
FeatureExtraction:
|
||||||
name: FeatureExtraction
|
name: FeatureExtraction
|
||||||
description: Features, such as PC1 and PC2, that are extracted from signals stored
|
description: Features, such as PC1 and PC2, that are extracted from signals stored
|
||||||
|
@ -132,6 +225,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(FeatureExtraction)
|
ifabsent: string(FeatureExtraction)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
@ -177,7 +271,7 @@ classes:
|
||||||
was generated from.
|
was generated from.
|
||||||
range: DynamicTableRegion
|
range: DynamicTableRegion
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
EventDetection:
|
EventDetection:
|
||||||
name: EventDetection
|
name: EventDetection
|
||||||
|
@ -187,6 +281,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(EventDetection)
|
ifabsent: string(EventDetection)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
detection_method:
|
detection_method:
|
||||||
|
@ -195,7 +290,6 @@ classes:
|
||||||
or dV/dT threshold, as well as relevant values.
|
or dV/dT threshold, as well as relevant values.
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
source_idx:
|
source_idx:
|
||||||
name: source_idx
|
name: source_idx
|
||||||
description: Indices (zero-based) into source ElectricalSeries::data array
|
description: Indices (zero-based) into source ElectricalSeries::data array
|
||||||
|
@ -224,7 +318,7 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: ElectricalSeries
|
- range: ElectricalSeries
|
||||||
- range: string
|
- range: string
|
||||||
|
@ -236,12 +330,19 @@ classes:
|
||||||
during experiment acquisition.
|
during experiment acquisition.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(EventWaveform)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: SpikeEventSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: SpikeEventSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
FilteredEphys:
|
FilteredEphys:
|
||||||
name: FilteredEphys
|
name: FilteredEphys
|
||||||
|
@ -258,12 +359,19 @@ classes:
|
||||||
the ElectricalSeries.
|
the ElectricalSeries.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(FilteredEphys)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: ElectricalSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: ElectricalSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
LFP:
|
LFP:
|
||||||
name: LFP
|
name: LFP
|
||||||
|
@ -272,12 +380,19 @@ classes:
|
||||||
properties should be noted in the ElectricalSeries description or comments field.
|
properties should be noted in the ElectricalSeries description or comments field.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(LFP)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: ElectricalSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: ElectricalSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
ElectrodeGroup:
|
ElectrodeGroup:
|
||||||
name: ElectrodeGroup
|
name: ElectrodeGroup
|
||||||
|
@ -286,6 +401,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
@ -304,8 +420,7 @@ classes:
|
||||||
name: position
|
name: position
|
||||||
description: stereotaxic or common framework coordinates
|
description: stereotaxic or common framework coordinates
|
||||||
range: ElectrodeGroup__position
|
range: ElectrodeGroup__position
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
device:
|
device:
|
||||||
name: device
|
name: device
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -313,7 +428,7 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: Device
|
- range: Device
|
||||||
- range: string
|
- range: string
|
||||||
|
@ -325,6 +440,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(position)
|
ifabsent: string(position)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: position
|
equals_string: position
|
||||||
|
@ -334,24 +450,18 @@ classes:
|
||||||
array:
|
array:
|
||||||
exact_number_dimensions: 1
|
exact_number_dimensions: 1
|
||||||
range: float32
|
range: float32
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
y:
|
y:
|
||||||
name: y
|
name: y
|
||||||
description: y coordinate
|
description: y coordinate
|
||||||
array:
|
array:
|
||||||
exact_number_dimensions: 1
|
exact_number_dimensions: 1
|
||||||
range: float32
|
range: float32
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
z:
|
z:
|
||||||
name: z
|
name: z
|
||||||
description: z coordinate
|
description: z coordinate
|
||||||
array:
|
array:
|
||||||
exact_number_dimensions: 1
|
exact_number_dimensions: 1
|
||||||
range: float32
|
range: float32
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
ClusterWaveforms:
|
ClusterWaveforms:
|
||||||
name: ClusterWaveforms
|
name: ClusterWaveforms
|
||||||
description: DEPRECATED The mean waveform shape, including standard deviation,
|
description: DEPRECATED The mean waveform shape, including standard deviation,
|
||||||
|
@ -365,6 +475,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(ClusterWaveforms)
|
ifabsent: string(ClusterWaveforms)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
waveform_filtering:
|
waveform_filtering:
|
||||||
|
@ -372,7 +483,6 @@ classes:
|
||||||
description: Filtering applied to data before generating mean/sd
|
description: Filtering applied to data before generating mean/sd
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
waveform_mean:
|
waveform_mean:
|
||||||
name: waveform_mean
|
name: waveform_mean
|
||||||
description: The mean waveform for each cluster, using the same indices for
|
description: The mean waveform for each cluster, using the same indices for
|
||||||
|
@ -404,7 +514,7 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: Clustering
|
- range: Clustering
|
||||||
- range: string
|
- range: string
|
||||||
|
@ -418,6 +528,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(Clustering)
|
ifabsent: string(Clustering)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
@ -426,7 +537,6 @@ classes:
|
||||||
clusters curated using Klusters, etc)
|
clusters curated using Klusters, etc)
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
num:
|
num:
|
||||||
name: num
|
name: num
|
||||||
description: Cluster number of each event
|
description: Cluster number of each event
|
||||||
|
|
|
@ -22,6 +22,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
start_time:
|
start_time:
|
||||||
|
@ -62,14 +63,12 @@ classes:
|
||||||
value: neurodata_type_inc
|
value: neurodata_type_inc
|
||||||
description: Index for tags.
|
description: Index for tags.
|
||||||
range: VectorIndex
|
range: VectorIndex
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
timeseries:
|
timeseries:
|
||||||
name: timeseries
|
name: timeseries
|
||||||
description: An index into a TimeSeries object.
|
description: An index into a TimeSeries object.
|
||||||
range: TimeIntervals__timeseries
|
range: TimeIntervals__timeseries
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
timeseries_index:
|
timeseries_index:
|
||||||
name: timeseries_index
|
name: timeseries_index
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -81,8 +80,7 @@ classes:
|
||||||
value: neurodata_type_inc
|
value: neurodata_type_inc
|
||||||
description: Index for timeseries.
|
description: Index for timeseries.
|
||||||
range: VectorIndex
|
range: VectorIndex
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
tree_root: true
|
tree_root: true
|
||||||
TimeIntervals__timeseries:
|
TimeIntervals__timeseries:
|
||||||
name: TimeIntervals__timeseries
|
name: TimeIntervals__timeseries
|
||||||
|
@ -92,6 +90,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(timeseries)
|
ifabsent: string(timeseries)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: timeseries
|
equals_string: timeseries
|
||||||
|
@ -103,8 +102,6 @@ classes:
|
||||||
array:
|
array:
|
||||||
exact_number_dimensions: 1
|
exact_number_dimensions: 1
|
||||||
range: int32
|
range: int32
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
count:
|
count:
|
||||||
name: count
|
name: count
|
||||||
description: Number of data samples available in this time series, during
|
description: Number of data samples available in this time series, during
|
||||||
|
@ -112,13 +109,10 @@ classes:
|
||||||
array:
|
array:
|
||||||
exact_number_dimensions: 1
|
exact_number_dimensions: 1
|
||||||
range: int32
|
range: int32
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
timeseries:
|
timeseries:
|
||||||
name: timeseries
|
name: timeseries
|
||||||
description: the TimeSeries that this index applies to.
|
description: the TimeSeries that this index applies to.
|
||||||
array:
|
array:
|
||||||
exact_number_dimensions: 1
|
exact_number_dimensions: 1
|
||||||
range: TimeSeries
|
range: TimeSeries
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
|
|
|
@ -30,6 +30,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(root)
|
ifabsent: string(root)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: root
|
equals_string: root
|
||||||
|
@ -64,13 +65,11 @@ classes:
|
||||||
other files.
|
other files.
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
session_description:
|
session_description:
|
||||||
name: session_description
|
name: session_description
|
||||||
description: A description of the experimental session and data in the file.
|
description: A description of the experimental session and data in the file.
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
session_start_time:
|
session_start_time:
|
||||||
name: session_start_time
|
name: session_start_time
|
||||||
description: 'Date and time of the experiment/session start. The date is stored
|
description: 'Date and time of the experiment/session start. The date is stored
|
||||||
|
@ -79,7 +78,6 @@ classes:
|
||||||
offset. Date accuracy is up to milliseconds.'
|
offset. Date accuracy is up to milliseconds.'
|
||||||
range: isodatetime
|
range: isodatetime
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
timestamps_reference_time:
|
timestamps_reference_time:
|
||||||
name: timestamps_reference_time
|
name: timestamps_reference_time
|
||||||
description: 'Date and time corresponding to time zero of all timestamps.
|
description: 'Date and time corresponding to time zero of all timestamps.
|
||||||
|
@ -89,7 +87,6 @@ classes:
|
||||||
times stored in the file use this time as reference (i.e., time zero).'
|
times stored in the file use this time as reference (i.e., time zero).'
|
||||||
range: isodatetime
|
range: isodatetime
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
acquisition:
|
acquisition:
|
||||||
name: acquisition
|
name: acquisition
|
||||||
description: Data streams recorded from the system, including ephys, ophys,
|
description: Data streams recorded from the system, including ephys, ophys,
|
||||||
|
@ -168,7 +165,8 @@ classes:
|
||||||
can exist in the present file or can be linked to a remote library file.
|
can exist in the present file or can be linked to a remote library file.
|
||||||
range: NWBFile__stimulus
|
range: NWBFile__stimulus
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
|
inlined_as_list: true
|
||||||
general:
|
general:
|
||||||
name: general
|
name: general
|
||||||
description: Experimental metadata, including protocol, notes and description
|
description: Experimental metadata, including protocol, notes and description
|
||||||
|
@ -188,7 +186,8 @@ classes:
|
||||||
should not be created unless there is data to store within them.
|
should not be created unless there is data to store within them.
|
||||||
range: NWBFile__general
|
range: NWBFile__general
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
|
inlined_as_list: true
|
||||||
intervals:
|
intervals:
|
||||||
name: intervals
|
name: intervals
|
||||||
description: Experimental intervals, whether that be logically distinct sub-experiments
|
description: Experimental intervals, whether that be logically distinct sub-experiments
|
||||||
|
@ -196,14 +195,18 @@ classes:
|
||||||
an experiment, or epochs (see epochs subgroup) deriving from analysis of
|
an experiment, or epochs (see epochs subgroup) deriving from analysis of
|
||||||
data.
|
data.
|
||||||
range: NWBFile__intervals
|
range: NWBFile__intervals
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
inlined_as_list: true
|
||||||
units:
|
units:
|
||||||
name: units
|
name: units
|
||||||
description: Data about sorted spike units.
|
description: Data about sorted spike units.
|
||||||
range: Units
|
range: Units
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
inlined_as_list: false
|
||||||
|
specifications:
|
||||||
|
name: specifications
|
||||||
|
description: Nested dictionary of schema specifications
|
||||||
|
range: dict
|
||||||
tree_root: true
|
tree_root: true
|
||||||
NWBFile__stimulus:
|
NWBFile__stimulus:
|
||||||
name: NWBFile__stimulus
|
name: NWBFile__stimulus
|
||||||
|
@ -223,6 +226,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(stimulus)
|
ifabsent: string(stimulus)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: stimulus
|
equals_string: stimulus
|
||||||
|
@ -265,6 +269,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(general)
|
ifabsent: string(general)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: general
|
equals_string: general
|
||||||
|
@ -272,14 +277,10 @@ classes:
|
||||||
name: data_collection
|
name: data_collection
|
||||||
description: Notes about data collection and analysis.
|
description: Notes about data collection and analysis.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
experiment_description:
|
experiment_description:
|
||||||
name: experiment_description
|
name: experiment_description
|
||||||
description: General description of the experiment.
|
description: General description of the experiment.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
experimenter:
|
experimenter:
|
||||||
name: experimenter
|
name: experimenter
|
||||||
description: Name of person(s) who performed the experiment. Can also specify
|
description: Name of person(s) who performed the experiment. Can also specify
|
||||||
|
@ -294,8 +295,6 @@ classes:
|
||||||
name: institution
|
name: institution
|
||||||
description: Institution(s) where experiment was performed.
|
description: Institution(s) where experiment was performed.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
keywords:
|
keywords:
|
||||||
name: keywords
|
name: keywords
|
||||||
description: Terms to search over.
|
description: Terms to search over.
|
||||||
|
@ -309,28 +308,20 @@ classes:
|
||||||
name: lab
|
name: lab
|
||||||
description: Laboratory where experiment was performed.
|
description: Laboratory where experiment was performed.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
notes:
|
notes:
|
||||||
name: notes
|
name: notes
|
||||||
description: Notes about the experiment.
|
description: Notes about the experiment.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
pharmacology:
|
pharmacology:
|
||||||
name: pharmacology
|
name: pharmacology
|
||||||
description: Description of drugs used, including how and when they were administered.
|
description: Description of drugs used, including how and when they were administered.
|
||||||
Anesthesia(s), painkiller(s), etc., plus dosage, concentration, etc.
|
Anesthesia(s), painkiller(s), etc., plus dosage, concentration, etc.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
protocol:
|
protocol:
|
||||||
name: protocol
|
name: protocol
|
||||||
description: Experimental protocol, if applicable. e.g., include IACUC protocol
|
description: Experimental protocol, if applicable. e.g., include IACUC protocol
|
||||||
number.
|
number.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
related_publications:
|
related_publications:
|
||||||
name: related_publications
|
name: related_publications
|
||||||
description: Publication information. PMID, DOI, URL, etc.
|
description: Publication information. PMID, DOI, URL, etc.
|
||||||
|
@ -344,49 +335,39 @@ classes:
|
||||||
name: session_id
|
name: session_id
|
||||||
description: Lab-specific ID for the session.
|
description: Lab-specific ID for the session.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
slices:
|
slices:
|
||||||
name: slices
|
name: slices
|
||||||
description: Description of slices, including information about preparation
|
description: Description of slices, including information about preparation
|
||||||
thickness, orientation, temperature, and bath solution.
|
thickness, orientation, temperature, and bath solution.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
source_script:
|
source_script:
|
||||||
name: source_script
|
name: source_script
|
||||||
description: Script file or link to public source code used to create this
|
description: Script file or link to public source code used to create this
|
||||||
NWB file.
|
NWB file.
|
||||||
range: general__source_script
|
range: general__source_script
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
stimulus:
|
stimulus:
|
||||||
name: stimulus
|
name: stimulus
|
||||||
description: Notes about stimuli, such as how and where they were presented.
|
description: Notes about stimuli, such as how and where they were presented.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
surgery:
|
surgery:
|
||||||
name: surgery
|
name: surgery
|
||||||
description: Narrative description about surgery/surgeries, including date(s)
|
description: Narrative description about surgery/surgeries, including date(s)
|
||||||
and who performed surgery.
|
and who performed surgery.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
virus:
|
virus:
|
||||||
name: virus
|
name: virus
|
||||||
description: Information about virus(es) used in experiments, including virus
|
description: Information about virus(es) used in experiments, including virus
|
||||||
ID, source, date made, injection location, volume, etc.
|
ID, source, date made, injection location, volume, etc.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
nwb_container:
|
nwb_container:
|
||||||
name: nwb_container
|
name: nwb_container
|
||||||
description: Place-holder than can be extended so that lab-specific meta-data
|
description: Place-holder than can be extended so that lab-specific meta-data
|
||||||
can be placed in /general.
|
can be placed in /general.
|
||||||
range: NWBContainer
|
range: NWBContainer
|
||||||
required: false
|
|
||||||
multivalued: true
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
devices:
|
devices:
|
||||||
name: devices
|
name: devices
|
||||||
description: Description of hardware devices used during experiment, e.g.,
|
description: Description of hardware devices used during experiment, e.g.,
|
||||||
|
@ -401,20 +382,20 @@ classes:
|
||||||
description: Information about the animal or person from which the data was
|
description: Information about the animal or person from which the data was
|
||||||
measured.
|
measured.
|
||||||
range: Subject
|
range: Subject
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
inlined_as_list: true
|
||||||
extracellular_ephys:
|
extracellular_ephys:
|
||||||
name: extracellular_ephys
|
name: extracellular_ephys
|
||||||
description: Metadata related to extracellular electrophysiology.
|
description: Metadata related to extracellular electrophysiology.
|
||||||
range: general__extracellular_ephys
|
range: general__extracellular_ephys
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
inlined_as_list: true
|
||||||
intracellular_ephys:
|
intracellular_ephys:
|
||||||
name: intracellular_ephys
|
name: intracellular_ephys
|
||||||
description: Metadata related to intracellular electrophysiology.
|
description: Metadata related to intracellular electrophysiology.
|
||||||
range: general__intracellular_ephys
|
range: general__intracellular_ephys
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
inlined_as_list: true
|
||||||
optogenetics:
|
optogenetics:
|
||||||
name: optogenetics
|
name: optogenetics
|
||||||
description: Metadata describing optogenetic stimuluation.
|
description: Metadata describing optogenetic stimuluation.
|
||||||
|
@ -439,6 +420,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(source_script)
|
ifabsent: string(source_script)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: source_script
|
equals_string: source_script
|
||||||
|
@ -459,6 +441,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(subject)
|
ifabsent: string(subject)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: subject
|
equals_string: subject
|
||||||
|
@ -466,52 +449,36 @@ classes:
|
||||||
name: age
|
name: age
|
||||||
description: Age of subject. Can be supplied instead of 'date_of_birth'.
|
description: Age of subject. Can be supplied instead of 'date_of_birth'.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
date_of_birth:
|
date_of_birth:
|
||||||
name: date_of_birth
|
name: date_of_birth
|
||||||
description: Date of birth of subject. Can be supplied instead of 'age'.
|
description: Date of birth of subject. Can be supplied instead of 'age'.
|
||||||
range: isodatetime
|
range: isodatetime
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
description:
|
description:
|
||||||
name: description
|
name: description
|
||||||
description: Description of subject and where subject came from (e.g., breeder,
|
description: Description of subject and where subject came from (e.g., breeder,
|
||||||
if animal).
|
if animal).
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
genotype:
|
genotype:
|
||||||
name: genotype
|
name: genotype
|
||||||
description: Genetic strain. If absent, assume Wild Type (WT).
|
description: Genetic strain. If absent, assume Wild Type (WT).
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
sex:
|
sex:
|
||||||
name: sex
|
name: sex
|
||||||
description: Gender of subject.
|
description: Gender of subject.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
species:
|
species:
|
||||||
name: species
|
name: species
|
||||||
description: Species of subject.
|
description: Species of subject.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
subject_id:
|
subject_id:
|
||||||
name: subject_id
|
name: subject_id
|
||||||
description: ID of animal/person used/participating in experiment (lab convention).
|
description: ID of animal/person used/participating in experiment (lab convention).
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
weight:
|
weight:
|
||||||
name: weight
|
name: weight
|
||||||
description: Weight at time of experiment, at time of surgery and at other
|
description: Weight at time of experiment, at time of surgery and at other
|
||||||
important times.
|
important times.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
general__extracellular_ephys:
|
general__extracellular_ephys:
|
||||||
name: general__extracellular_ephys
|
name: general__extracellular_ephys
|
||||||
description: Metadata related to extracellular electrophysiology.
|
description: Metadata related to extracellular electrophysiology.
|
||||||
|
@ -519,21 +486,23 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(extracellular_ephys)
|
ifabsent: string(extracellular_ephys)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: extracellular_ephys
|
equals_string: extracellular_ephys
|
||||||
electrode_group:
|
|
||||||
name: electrode_group
|
|
||||||
description: Physical group of electrodes.
|
|
||||||
range: ElectrodeGroup
|
|
||||||
required: false
|
|
||||||
multivalued: true
|
|
||||||
electrodes:
|
electrodes:
|
||||||
name: electrodes
|
name: electrodes
|
||||||
description: A table of all electrodes (i.e. channels) used for recording.
|
description: A table of all electrodes (i.e. channels) used for recording.
|
||||||
range: extracellular_ephys__electrodes
|
range: extracellular_ephys__electrodes
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
inlined_as_list: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
description: Physical group of electrodes.
|
||||||
|
range: ElectrodeGroup
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
extracellular_ephys__electrodes:
|
extracellular_ephys__electrodes:
|
||||||
name: extracellular_ephys__electrodes
|
name: extracellular_ephys__electrodes
|
||||||
description: A table of all electrodes (i.e. channels) used for recording.
|
description: A table of all electrodes (i.e. channels) used for recording.
|
||||||
|
@ -542,6 +511,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(electrodes)
|
ifabsent: string(electrodes)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: electrodes
|
equals_string: electrodes
|
||||||
|
@ -604,9 +574,13 @@ classes:
|
||||||
group:
|
group:
|
||||||
name: group
|
name: group
|
||||||
description: Reference to the ElectrodeGroup this electrode is a part of.
|
description: Reference to the ElectrodeGroup this electrode is a part of.
|
||||||
|
array:
|
||||||
|
minimum_number_dimensions: 1
|
||||||
|
maximum_number_dimensions: false
|
||||||
range: ElectrodeGroup
|
range: ElectrodeGroup
|
||||||
required: true
|
required: true
|
||||||
multivalued: true
|
multivalued: false
|
||||||
|
inlined: true
|
||||||
group_name:
|
group_name:
|
||||||
name: group_name
|
name: group_name
|
||||||
description: Name of the ElectrodeGroup this electrode is a part of.
|
description: Name of the ElectrodeGroup this electrode is a part of.
|
||||||
|
@ -659,6 +633,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(intracellular_ephys)
|
ifabsent: string(intracellular_ephys)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: intracellular_ephys
|
equals_string: intracellular_ephys
|
||||||
|
@ -668,20 +643,19 @@ classes:
|
||||||
frequency fall-off, etc. If this changes between TimeSeries, filter description
|
frequency fall-off, etc. If this changes between TimeSeries, filter description
|
||||||
should be stored as a text attribute for each TimeSeries.
|
should be stored as a text attribute for each TimeSeries.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
intracellular_electrode:
|
|
||||||
name: intracellular_electrode
|
|
||||||
description: An intracellular electrode.
|
|
||||||
range: IntracellularElectrode
|
|
||||||
required: false
|
|
||||||
multivalued: true
|
|
||||||
sweep_table:
|
sweep_table:
|
||||||
name: sweep_table
|
name: sweep_table
|
||||||
description: The table which groups different PatchClampSeries together.
|
description: The table which groups different PatchClampSeries together.
|
||||||
range: SweepTable
|
range: SweepTable
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
inlined_as_list: false
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
description: An intracellular electrode.
|
||||||
|
range: IntracellularElectrode
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
NWBFile__intervals:
|
NWBFile__intervals:
|
||||||
name: NWBFile__intervals
|
name: NWBFile__intervals
|
||||||
description: Experimental intervals, whether that be logically distinct sub-experiments
|
description: Experimental intervals, whether that be logically distinct sub-experiments
|
||||||
|
@ -691,6 +665,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(intervals)
|
ifabsent: string(intervals)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: intervals
|
equals_string: intervals
|
||||||
|
@ -699,24 +674,25 @@ classes:
|
||||||
description: Divisions in time marking experimental stages or sub-divisions
|
description: Divisions in time marking experimental stages or sub-divisions
|
||||||
of a single recording session.
|
of a single recording session.
|
||||||
range: TimeIntervals
|
range: TimeIntervals
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
inlined_as_list: false
|
||||||
trials:
|
trials:
|
||||||
name: trials
|
name: trials
|
||||||
description: Repeated experimental events that have a logical grouping.
|
description: Repeated experimental events that have a logical grouping.
|
||||||
range: TimeIntervals
|
range: TimeIntervals
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
inlined_as_list: false
|
||||||
invalid_times:
|
invalid_times:
|
||||||
name: invalid_times
|
name: invalid_times
|
||||||
description: Time intervals that should be removed from analysis.
|
description: Time intervals that should be removed from analysis.
|
||||||
range: TimeIntervals
|
range: TimeIntervals
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
inlined_as_list: false
|
||||||
time_intervals:
|
value:
|
||||||
name: time_intervals
|
name: value
|
||||||
description: Optional additional table(s) for describing other experimental
|
description: Optional additional table(s) for describing other experimental
|
||||||
time intervals.
|
time intervals.
|
||||||
range: TimeIntervals
|
range: TimeIntervals
|
||||||
required: false
|
|
||||||
multivalued: true
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
|
|
@ -23,6 +23,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
stimulus_description:
|
stimulus_description:
|
||||||
|
@ -40,14 +41,12 @@ classes:
|
||||||
description: Recorded voltage or current.
|
description: Recorded voltage or current.
|
||||||
range: PatchClampSeries__data
|
range: PatchClampSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
gain:
|
gain:
|
||||||
name: gain
|
name: gain
|
||||||
description: Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt
|
description: Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt
|
||||||
(c-clamp).
|
(c-clamp).
|
||||||
range: float32
|
range: float32
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
electrode:
|
electrode:
|
||||||
name: electrode
|
name: electrode
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -55,7 +54,7 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: IntracellularElectrode
|
- range: IntracellularElectrode
|
||||||
- range: string
|
- range: string
|
||||||
|
@ -67,9 +66,33 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(data)
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: data
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
unit:
|
unit:
|
||||||
name: unit
|
name: unit
|
||||||
description: Base unit of measurement for working with the data. Actual stored
|
description: Base unit of measurement for working with the data. Actual stored
|
||||||
|
@ -92,32 +115,27 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
|
bias_current:
|
||||||
|
name: bias_current
|
||||||
|
description: Bias current, in amps.
|
||||||
|
range: float32
|
||||||
|
bridge_balance:
|
||||||
|
name: bridge_balance
|
||||||
|
description: Bridge balance, in ohms.
|
||||||
|
range: float32
|
||||||
|
capacitance_compensation:
|
||||||
|
name: capacitance_compensation
|
||||||
|
description: Capacitance compensation, in farads.
|
||||||
|
range: float32
|
||||||
data:
|
data:
|
||||||
name: data
|
name: data
|
||||||
description: Recorded voltage.
|
description: Recorded voltage.
|
||||||
range: CurrentClampSeries__data
|
range: CurrentClampSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
bias_current:
|
|
||||||
name: bias_current
|
|
||||||
description: Bias current, in amps.
|
|
||||||
range: float32
|
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
bridge_balance:
|
|
||||||
name: bridge_balance
|
|
||||||
description: Bridge balance, in ohms.
|
|
||||||
range: float32
|
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
capacitance_compensation:
|
|
||||||
name: capacitance_compensation
|
|
||||||
description: Capacitance compensation, in farads.
|
|
||||||
range: float32
|
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
tree_root: true
|
tree_root: true
|
||||||
CurrentClampSeries__data:
|
CurrentClampSeries__data:
|
||||||
name: CurrentClampSeries__data
|
name: CurrentClampSeries__data
|
||||||
|
@ -126,9 +144,33 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(data)
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: data
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
unit:
|
unit:
|
||||||
name: unit
|
name: unit
|
||||||
description: Base unit of measurement for working with the data. which is
|
description: Base unit of measurement for working with the data. which is
|
||||||
|
@ -140,8 +182,10 @@ classes:
|
||||||
equals_string: volts
|
equals_string: volts
|
||||||
value:
|
value:
|
||||||
name: value
|
name: value
|
||||||
range: AnyType
|
array:
|
||||||
required: true
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
range: numeric
|
||||||
IZeroClampSeries:
|
IZeroClampSeries:
|
||||||
name: IZeroClampSeries
|
name: IZeroClampSeries
|
||||||
description: Voltage data from an intracellular recording when all current and
|
description: Voltage data from an intracellular recording when all current and
|
||||||
|
@ -152,6 +196,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
bias_current:
|
bias_current:
|
||||||
|
@ -159,19 +204,16 @@ classes:
|
||||||
description: Bias current, in amps, fixed to 0.0.
|
description: Bias current, in amps, fixed to 0.0.
|
||||||
range: float32
|
range: float32
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
bridge_balance:
|
bridge_balance:
|
||||||
name: bridge_balance
|
name: bridge_balance
|
||||||
description: Bridge balance, in ohms, fixed to 0.0.
|
description: Bridge balance, in ohms, fixed to 0.0.
|
||||||
range: float32
|
range: float32
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
capacitance_compensation:
|
capacitance_compensation:
|
||||||
name: capacitance_compensation
|
name: capacitance_compensation
|
||||||
description: Capacitance compensation, in farads, fixed to 0.0.
|
description: Capacitance compensation, in farads, fixed to 0.0.
|
||||||
range: float32
|
range: float32
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
tree_root: true
|
tree_root: true
|
||||||
CurrentClampStimulusSeries:
|
CurrentClampStimulusSeries:
|
||||||
name: CurrentClampStimulusSeries
|
name: CurrentClampStimulusSeries
|
||||||
|
@ -180,6 +222,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
|
@ -187,7 +230,7 @@ classes:
|
||||||
description: Stimulus current applied.
|
description: Stimulus current applied.
|
||||||
range: CurrentClampStimulusSeries__data
|
range: CurrentClampStimulusSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
CurrentClampStimulusSeries__data:
|
CurrentClampStimulusSeries__data:
|
||||||
name: CurrentClampStimulusSeries__data
|
name: CurrentClampStimulusSeries__data
|
||||||
|
@ -196,9 +239,33 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(data)
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: data
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
unit:
|
unit:
|
||||||
name: unit
|
name: unit
|
||||||
description: Base unit of measurement for working with the data. which is
|
description: Base unit of measurement for working with the data. which is
|
||||||
|
@ -210,8 +277,10 @@ classes:
|
||||||
equals_string: amperes
|
equals_string: amperes
|
||||||
value:
|
value:
|
||||||
name: value
|
name: value
|
||||||
range: AnyType
|
array:
|
||||||
required: true
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
range: numeric
|
||||||
VoltageClampSeries:
|
VoltageClampSeries:
|
||||||
name: VoltageClampSeries
|
name: VoltageClampSeries
|
||||||
description: Current data from an intracellular voltage-clamp recording. A corresponding
|
description: Current data from an intracellular voltage-clamp recording. A corresponding
|
||||||
|
@ -221,80 +290,51 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
|
capacitance_fast:
|
||||||
|
name: capacitance_fast
|
||||||
|
description: Fast capacitance, in farads.
|
||||||
|
range: VoltageClampSeries__capacitance_fast
|
||||||
|
inlined: true
|
||||||
|
capacitance_slow:
|
||||||
|
name: capacitance_slow
|
||||||
|
description: Slow capacitance, in farads.
|
||||||
|
range: VoltageClampSeries__capacitance_slow
|
||||||
|
inlined: true
|
||||||
data:
|
data:
|
||||||
name: data
|
name: data
|
||||||
description: Recorded current.
|
description: Recorded current.
|
||||||
range: VoltageClampSeries__data
|
range: VoltageClampSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
capacitance_fast:
|
|
||||||
name: capacitance_fast
|
|
||||||
description: Fast capacitance, in farads.
|
|
||||||
range: VoltageClampSeries__capacitance_fast
|
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
capacitance_slow:
|
|
||||||
name: capacitance_slow
|
|
||||||
description: Slow capacitance, in farads.
|
|
||||||
range: VoltageClampSeries__capacitance_slow
|
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
resistance_comp_bandwidth:
|
resistance_comp_bandwidth:
|
||||||
name: resistance_comp_bandwidth
|
name: resistance_comp_bandwidth
|
||||||
description: Resistance compensation bandwidth, in hertz.
|
description: Resistance compensation bandwidth, in hertz.
|
||||||
range: VoltageClampSeries__resistance_comp_bandwidth
|
range: VoltageClampSeries__resistance_comp_bandwidth
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
resistance_comp_correction:
|
resistance_comp_correction:
|
||||||
name: resistance_comp_correction
|
name: resistance_comp_correction
|
||||||
description: Resistance compensation correction, in percent.
|
description: Resistance compensation correction, in percent.
|
||||||
range: VoltageClampSeries__resistance_comp_correction
|
range: VoltageClampSeries__resistance_comp_correction
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
resistance_comp_prediction:
|
resistance_comp_prediction:
|
||||||
name: resistance_comp_prediction
|
name: resistance_comp_prediction
|
||||||
description: Resistance compensation prediction, in percent.
|
description: Resistance compensation prediction, in percent.
|
||||||
range: VoltageClampSeries__resistance_comp_prediction
|
range: VoltageClampSeries__resistance_comp_prediction
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
whole_cell_capacitance_comp:
|
whole_cell_capacitance_comp:
|
||||||
name: whole_cell_capacitance_comp
|
name: whole_cell_capacitance_comp
|
||||||
description: Whole cell capacitance compensation, in farads.
|
description: Whole cell capacitance compensation, in farads.
|
||||||
range: VoltageClampSeries__whole_cell_capacitance_comp
|
range: VoltageClampSeries__whole_cell_capacitance_comp
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
whole_cell_series_resistance_comp:
|
whole_cell_series_resistance_comp:
|
||||||
name: whole_cell_series_resistance_comp
|
name: whole_cell_series_resistance_comp
|
||||||
description: Whole cell series resistance compensation, in ohms.
|
description: Whole cell series resistance compensation, in ohms.
|
||||||
range: VoltageClampSeries__whole_cell_series_resistance_comp
|
range: VoltageClampSeries__whole_cell_series_resistance_comp
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
tree_root: true
|
tree_root: true
|
||||||
VoltageClampSeries__data:
|
|
||||||
name: VoltageClampSeries__data
|
|
||||||
description: Recorded current.
|
|
||||||
attributes:
|
|
||||||
name:
|
|
||||||
name: name
|
|
||||||
ifabsent: string(data)
|
|
||||||
range: string
|
|
||||||
required: true
|
|
||||||
equals_string: data
|
|
||||||
unit:
|
|
||||||
name: unit
|
|
||||||
description: Base unit of measurement for working with the data. which is
|
|
||||||
fixed to 'amperes'. Actual stored values are not necessarily stored in these
|
|
||||||
units. To access the data in these units, multiply 'data' by 'conversion'.
|
|
||||||
ifabsent: string(amperes)
|
|
||||||
range: text
|
|
||||||
required: true
|
|
||||||
equals_string: amperes
|
|
||||||
value:
|
|
||||||
name: value
|
|
||||||
range: AnyType
|
|
||||||
required: true
|
|
||||||
VoltageClampSeries__capacitance_fast:
|
VoltageClampSeries__capacitance_fast:
|
||||||
name: VoltageClampSeries__capacitance_fast
|
name: VoltageClampSeries__capacitance_fast
|
||||||
description: Fast capacitance, in farads.
|
description: Fast capacitance, in farads.
|
||||||
|
@ -302,6 +342,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(capacitance_fast)
|
ifabsent: string(capacitance_fast)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: capacitance_fast
|
equals_string: capacitance_fast
|
||||||
|
@ -323,6 +364,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(capacitance_slow)
|
ifabsent: string(capacitance_slow)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: capacitance_slow
|
equals_string: capacitance_slow
|
||||||
|
@ -337,6 +379,55 @@ classes:
|
||||||
name: value
|
name: value
|
||||||
range: float32
|
range: float32
|
||||||
required: true
|
required: true
|
||||||
|
VoltageClampSeries__data:
|
||||||
|
name: VoltageClampSeries__data
|
||||||
|
description: Recorded current.
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
description: Base unit of measurement for working with the data. which is
|
||||||
|
fixed to 'amperes'. Actual stored values are not necessarily stored in these
|
||||||
|
units. To access the data in these units, multiply 'data' by 'conversion'.
|
||||||
|
ifabsent: string(amperes)
|
||||||
|
range: text
|
||||||
|
required: true
|
||||||
|
equals_string: amperes
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
range: numeric
|
||||||
VoltageClampSeries__resistance_comp_bandwidth:
|
VoltageClampSeries__resistance_comp_bandwidth:
|
||||||
name: VoltageClampSeries__resistance_comp_bandwidth
|
name: VoltageClampSeries__resistance_comp_bandwidth
|
||||||
description: Resistance compensation bandwidth, in hertz.
|
description: Resistance compensation bandwidth, in hertz.
|
||||||
|
@ -344,6 +435,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(resistance_comp_bandwidth)
|
ifabsent: string(resistance_comp_bandwidth)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: resistance_comp_bandwidth
|
equals_string: resistance_comp_bandwidth
|
||||||
|
@ -366,6 +458,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(resistance_comp_correction)
|
ifabsent: string(resistance_comp_correction)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: resistance_comp_correction
|
equals_string: resistance_comp_correction
|
||||||
|
@ -388,6 +481,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(resistance_comp_prediction)
|
ifabsent: string(resistance_comp_prediction)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: resistance_comp_prediction
|
equals_string: resistance_comp_prediction
|
||||||
|
@ -410,6 +504,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(whole_cell_capacitance_comp)
|
ifabsent: string(whole_cell_capacitance_comp)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: whole_cell_capacitance_comp
|
equals_string: whole_cell_capacitance_comp
|
||||||
|
@ -432,6 +527,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(whole_cell_series_resistance_comp)
|
ifabsent: string(whole_cell_series_resistance_comp)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: whole_cell_series_resistance_comp
|
equals_string: whole_cell_series_resistance_comp
|
||||||
|
@ -454,6 +550,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
|
@ -461,7 +558,7 @@ classes:
|
||||||
description: Stimulus voltage applied.
|
description: Stimulus voltage applied.
|
||||||
range: VoltageClampStimulusSeries__data
|
range: VoltageClampStimulusSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
VoltageClampStimulusSeries__data:
|
VoltageClampStimulusSeries__data:
|
||||||
name: VoltageClampStimulusSeries__data
|
name: VoltageClampStimulusSeries__data
|
||||||
|
@ -470,9 +567,33 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(data)
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: data
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
unit:
|
unit:
|
||||||
name: unit
|
name: unit
|
||||||
description: Base unit of measurement for working with the data. which is
|
description: Base unit of measurement for working with the data. which is
|
||||||
|
@ -484,8 +605,10 @@ classes:
|
||||||
equals_string: volts
|
equals_string: volts
|
||||||
value:
|
value:
|
||||||
name: value
|
name: value
|
||||||
range: AnyType
|
array:
|
||||||
required: true
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
range: numeric
|
||||||
IntracellularElectrode:
|
IntracellularElectrode:
|
||||||
name: IntracellularElectrode
|
name: IntracellularElectrode
|
||||||
description: An intracellular electrode and its metadata.
|
description: An intracellular electrode and its metadata.
|
||||||
|
@ -493,6 +616,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
@ -500,45 +624,32 @@ classes:
|
||||||
description: Description of electrode (e.g., whole-cell, sharp, etc.).
|
description: Description of electrode (e.g., whole-cell, sharp, etc.).
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
filtering:
|
filtering:
|
||||||
name: filtering
|
name: filtering
|
||||||
description: Electrode specific filtering.
|
description: Electrode specific filtering.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
initial_access_resistance:
|
initial_access_resistance:
|
||||||
name: initial_access_resistance
|
name: initial_access_resistance
|
||||||
description: Initial access resistance.
|
description: Initial access resistance.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
location:
|
location:
|
||||||
name: location
|
name: location
|
||||||
description: Location of the electrode. Specify the area, layer, comments
|
description: Location of the electrode. Specify the area, layer, comments
|
||||||
on estimation of area/layer, stereotaxic coordinates if in vivo, etc. Use
|
on estimation of area/layer, stereotaxic coordinates if in vivo, etc. Use
|
||||||
standard atlas names for anatomical regions when possible.
|
standard atlas names for anatomical regions when possible.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
resistance:
|
resistance:
|
||||||
name: resistance
|
name: resistance
|
||||||
description: Electrode resistance, in ohms.
|
description: Electrode resistance, in ohms.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
seal:
|
seal:
|
||||||
name: seal
|
name: seal
|
||||||
description: Information about seal used for recording.
|
description: Information about seal used for recording.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
slice:
|
slice:
|
||||||
name: slice
|
name: slice
|
||||||
description: Information about slice used for recording.
|
description: Information about slice used for recording.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
device:
|
device:
|
||||||
name: device
|
name: device
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -546,7 +657,7 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: Device
|
- range: Device
|
||||||
- range: string
|
- range: string
|
||||||
|
@ -558,23 +669,19 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
sweep_number:
|
|
||||||
name: sweep_number
|
|
||||||
description: Sweep number of the PatchClampSeries in that row.
|
|
||||||
array:
|
|
||||||
minimum_number_dimensions: 1
|
|
||||||
maximum_number_dimensions: false
|
|
||||||
range: uint32
|
|
||||||
required: true
|
|
||||||
multivalued: false
|
|
||||||
series:
|
series:
|
||||||
name: series
|
name: series
|
||||||
description: The PatchClampSeries with the sweep number in that row.
|
description: The PatchClampSeries with the sweep number in that row.
|
||||||
|
array:
|
||||||
|
minimum_number_dimensions: 1
|
||||||
|
maximum_number_dimensions: false
|
||||||
range: PatchClampSeries
|
range: PatchClampSeries
|
||||||
required: true
|
required: true
|
||||||
multivalued: true
|
multivalued: false
|
||||||
|
inlined: true
|
||||||
series_index:
|
series_index:
|
||||||
name: series_index
|
name: series_index
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -587,5 +694,14 @@ classes:
|
||||||
description: Index for series.
|
description: Index for series.
|
||||||
range: VectorIndex
|
range: VectorIndex
|
||||||
required: true
|
required: true
|
||||||
|
inlined: true
|
||||||
|
sweep_number:
|
||||||
|
name: sweep_number
|
||||||
|
description: Sweep number of the PatchClampSeries in that row.
|
||||||
|
array:
|
||||||
|
minimum_number_dimensions: 1
|
||||||
|
maximum_number_dimensions: false
|
||||||
|
range: uint32
|
||||||
|
required: true
|
||||||
multivalued: false
|
multivalued: false
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
|
|
@ -20,6 +20,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
value:
|
value:
|
||||||
|
@ -37,6 +38,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
value:
|
value:
|
||||||
|
@ -56,6 +58,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
value:
|
value:
|
||||||
|
@ -80,26 +83,14 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
name: data
|
name: data
|
||||||
description: Binary data representing images across frames.
|
description: Binary data representing images across frames.
|
||||||
range: numeric
|
range: ImageSeries__data
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
any_of:
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: frame
|
|
||||||
- alias: x
|
|
||||||
- alias: y
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: frame
|
|
||||||
- alias: x
|
|
||||||
- alias: y
|
|
||||||
- alias: z
|
|
||||||
dimension:
|
dimension:
|
||||||
name: dimension
|
name: dimension
|
||||||
description: Number of pixels on x, y, (and z) axes.
|
description: Number of pixels on x, y, (and z) axes.
|
||||||
|
@ -117,18 +108,72 @@ classes:
|
||||||
used if the image is stored in another NWB file and that file is linked
|
used if the image is stored in another NWB file and that file is linked
|
||||||
to this file.
|
to this file.
|
||||||
range: ImageSeries__external_file
|
range: ImageSeries__external_file
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
format:
|
format:
|
||||||
name: format
|
name: format
|
||||||
description: Format of image. If this is 'external', then the attribute 'external_file'
|
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
|
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
|
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.
|
this attribute is not present, then the default format='raw' case is assumed.
|
||||||
|
ifabsent: string(raw)
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
ImageSeries__data:
|
||||||
|
name: ImageSeries__data
|
||||||
|
description: Binary data representing images across frames.
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
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'.
|
||||||
|
range: text
|
||||||
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
range: numeric
|
||||||
|
any_of:
|
||||||
|
- array:
|
||||||
|
dimensions:
|
||||||
|
- alias: frame
|
||||||
|
- alias: x
|
||||||
|
- alias: y
|
||||||
|
- array:
|
||||||
|
dimensions:
|
||||||
|
- alias: frame
|
||||||
|
- alias: x
|
||||||
|
- alias: y
|
||||||
|
- alias: z
|
||||||
ImageSeries__external_file:
|
ImageSeries__external_file:
|
||||||
name: ImageSeries__external_file
|
name: ImageSeries__external_file
|
||||||
description: Paths to one or more external file(s). The field is only present
|
description: Paths to one or more external file(s). The field is only present
|
||||||
|
@ -139,6 +184,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(external_file)
|
ifabsent: string(external_file)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: external_file
|
equals_string: external_file
|
||||||
|
@ -176,6 +222,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
masked_imageseries:
|
masked_imageseries:
|
||||||
|
@ -185,7 +232,7 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: ImageSeries
|
- range: ImageSeries
|
||||||
- range: string
|
- range: string
|
||||||
|
@ -201,14 +248,13 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
distance:
|
distance:
|
||||||
name: distance
|
name: distance
|
||||||
description: Distance from camera/monitor to target/eye.
|
description: Distance from camera/monitor to target/eye.
|
||||||
range: float32
|
range: float32
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
field_of_view:
|
field_of_view:
|
||||||
name: field_of_view
|
name: field_of_view
|
||||||
description: Width, height and depth of image, or imaged area, in meters.
|
description: Width, height and depth of image, or imaged area, in meters.
|
||||||
|
@ -229,8 +275,6 @@ classes:
|
||||||
description: Description of image relative to some reference frame (e.g.,
|
description: Description of image relative to some reference frame (e.g.,
|
||||||
which way is up). Must also specify frame of reference.
|
which way is up). Must also specify frame of reference.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
tree_root: true
|
tree_root: true
|
||||||
IndexSeries:
|
IndexSeries:
|
||||||
name: IndexSeries
|
name: IndexSeries
|
||||||
|
@ -244,17 +288,15 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
name: data
|
name: data
|
||||||
description: Index of the frame in the referenced ImageSeries.
|
description: Index of the frame in the referenced ImageSeries.
|
||||||
array:
|
range: IndexSeries__data
|
||||||
dimensions:
|
|
||||||
- alias: num_times
|
|
||||||
range: int32
|
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
indexed_timeseries:
|
indexed_timeseries:
|
||||||
name: indexed_timeseries
|
name: indexed_timeseries
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -262,8 +304,55 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: ImageSeries
|
- range: ImageSeries
|
||||||
- range: string
|
- range: string
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
IndexSeries__data:
|
||||||
|
name: IndexSeries__data
|
||||||
|
description: Index of the frame in the referenced ImageSeries.
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
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'.
|
||||||
|
range: text
|
||||||
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
range: int32
|
||||||
|
|
|
@ -66,6 +66,7 @@ types:
|
||||||
numeric:
|
numeric:
|
||||||
name: numeric
|
name: numeric
|
||||||
typeof: float
|
typeof: float
|
||||||
|
repr: float | int
|
||||||
text:
|
text:
|
||||||
name: text
|
name: text
|
||||||
typeof: string
|
typeof: string
|
||||||
|
@ -87,6 +88,9 @@ types:
|
||||||
isodatetime:
|
isodatetime:
|
||||||
name: isodatetime
|
name: isodatetime
|
||||||
typeof: datetime
|
typeof: datetime
|
||||||
|
dict:
|
||||||
|
name: dict
|
||||||
|
repr: dict
|
||||||
classes:
|
classes:
|
||||||
AnyType:
|
AnyType:
|
||||||
name: AnyType
|
name: AnyType
|
||||||
|
|
|
@ -30,6 +30,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
|
@ -37,7 +38,7 @@ classes:
|
||||||
description: Values of each feature at each time.
|
description: Values of each feature at each time.
|
||||||
range: AbstractFeatureSeries__data
|
range: AbstractFeatureSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
feature_units:
|
feature_units:
|
||||||
name: feature_units
|
name: feature_units
|
||||||
description: Units of each feature.
|
description: Units of each feature.
|
||||||
|
@ -64,9 +65,33 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(data)
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: data
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
unit:
|
unit:
|
||||||
name: unit
|
name: unit
|
||||||
description: Since there can be different units for different features, store
|
description: Since there can be different units for different features, store
|
||||||
|
@ -96,18 +121,63 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
name: data
|
name: data
|
||||||
description: Annotations made during an experiment.
|
description: Annotations made during an experiment.
|
||||||
|
range: AnnotationSeries__data
|
||||||
|
required: true
|
||||||
|
inlined: true
|
||||||
|
tree_root: true
|
||||||
|
AnnotationSeries__data:
|
||||||
|
name: AnnotationSeries__data
|
||||||
|
description: Annotations made during an experiment.
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data. Annotations
|
||||||
|
have no units, so the value is fixed to -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: true
|
||||||
|
equals_number: -1
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
description: Base unit of measurement for working with the data. Annotations
|
||||||
|
have no units, so the value is fixed to 'n/a'.
|
||||||
|
ifabsent: string(n/a)
|
||||||
|
range: text
|
||||||
|
required: true
|
||||||
|
equals_string: n/a
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
array:
|
array:
|
||||||
dimensions:
|
dimensions:
|
||||||
- alias: num_times
|
- alias: num_times
|
||||||
range: text
|
range: text
|
||||||
required: true
|
|
||||||
multivalued: false
|
|
||||||
tree_root: true
|
|
||||||
IntervalSeries:
|
IntervalSeries:
|
||||||
name: IntervalSeries
|
name: IntervalSeries
|
||||||
description: Stores intervals of data. The timestamps field stores the beginning
|
description: Stores intervals of data. The timestamps field stores the beginning
|
||||||
|
@ -121,18 +191,63 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
name: data
|
name: data
|
||||||
description: Use values >0 if interval started, <0 if interval ended.
|
description: Use values >0 if interval started, <0 if interval ended.
|
||||||
|
range: IntervalSeries__data
|
||||||
|
required: true
|
||||||
|
inlined: true
|
||||||
|
tree_root: true
|
||||||
|
IntervalSeries__data:
|
||||||
|
name: IntervalSeries__data
|
||||||
|
description: Use values >0 if interval started, <0 if interval ended.
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data. Annotations
|
||||||
|
have no units, so the value is fixed to -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: true
|
||||||
|
equals_number: -1
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
description: Base unit of measurement for working with the data. Annotations
|
||||||
|
have no units, so the value is fixed to 'n/a'.
|
||||||
|
ifabsent: string(n/a)
|
||||||
|
range: text
|
||||||
|
required: true
|
||||||
|
equals_string: n/a
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
array:
|
array:
|
||||||
dimensions:
|
dimensions:
|
||||||
- alias: num_times
|
- alias: num_times
|
||||||
range: int8
|
range: int8
|
||||||
required: true
|
|
||||||
multivalued: false
|
|
||||||
tree_root: true
|
|
||||||
DecompositionSeries:
|
DecompositionSeries:
|
||||||
name: DecompositionSeries
|
name: DecompositionSeries
|
||||||
description: Spectral analysis of a time series, e.g. of an LFP or a speech signal.
|
description: Spectral analysis of a time series, e.g. of an LFP or a speech signal.
|
||||||
|
@ -140,6 +255,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
|
@ -147,28 +263,27 @@ classes:
|
||||||
description: Data decomposed into frequency bands.
|
description: Data decomposed into frequency bands.
|
||||||
range: DecompositionSeries__data
|
range: DecompositionSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
metric:
|
metric:
|
||||||
name: metric
|
name: metric
|
||||||
description: The metric used, e.g. phase, amplitude, power.
|
description: The metric used, e.g. phase, amplitude, power.
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
bands:
|
bands:
|
||||||
name: bands
|
name: bands
|
||||||
description: Table for describing the bands that this series was generated
|
description: Table for describing the bands that this series was generated
|
||||||
from. There should be one row in this table for each band.
|
from. There should be one row in this table for each band.
|
||||||
range: DecompositionSeries__bands
|
range: DecompositionSeries__bands
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
|
inlined_as_list: true
|
||||||
source_timeseries:
|
source_timeseries:
|
||||||
name: source_timeseries
|
name: source_timeseries
|
||||||
annotations:
|
annotations:
|
||||||
source_type:
|
source_type:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
any_of:
|
any_of:
|
||||||
- range: TimeSeries
|
- range: TimeSeries
|
||||||
- range: string
|
- range: string
|
||||||
|
@ -180,9 +295,33 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(data)
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: data
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
unit:
|
unit:
|
||||||
name: unit
|
name: unit
|
||||||
description: Base unit of measurement for working with the data. Actual stored
|
description: Base unit of measurement for working with the data. Actual stored
|
||||||
|
@ -208,6 +347,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(bands)
|
ifabsent: string(bands)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: bands
|
equals_string: bands
|
||||||
|
@ -259,10 +399,21 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(Units)
|
ifabsent: string(Units)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
spike_times_index:
|
electrode_group:
|
||||||
name: spike_times_index
|
name: electrode_group
|
||||||
|
description: Electrode group that each spike unit came from.
|
||||||
|
array:
|
||||||
|
minimum_number_dimensions: 1
|
||||||
|
maximum_number_dimensions: false
|
||||||
|
range: ElectrodeGroup
|
||||||
|
required: false
|
||||||
|
multivalued: false
|
||||||
|
inlined: true
|
||||||
|
electrodes:
|
||||||
|
name: electrodes
|
||||||
annotations:
|
annotations:
|
||||||
named:
|
named:
|
||||||
tag: named
|
tag: named
|
||||||
|
@ -270,14 +421,30 @@ classes:
|
||||||
source_type:
|
source_type:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: neurodata_type_inc
|
value: neurodata_type_inc
|
||||||
description: Index into the spike_times dataset.
|
description: Electrode that each spike unit came from, specified using a DynamicTableRegion.
|
||||||
|
range: DynamicTableRegion
|
||||||
|
inlined: true
|
||||||
|
electrodes_index:
|
||||||
|
name: electrodes_index
|
||||||
|
annotations:
|
||||||
|
named:
|
||||||
|
tag: named
|
||||||
|
value: true
|
||||||
|
source_type:
|
||||||
|
tag: source_type
|
||||||
|
value: neurodata_type_inc
|
||||||
|
description: Index into electrodes.
|
||||||
range: VectorIndex
|
range: VectorIndex
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
obs_intervals:
|
||||||
spike_times:
|
name: obs_intervals
|
||||||
name: spike_times
|
description: Observation intervals for each unit.
|
||||||
description: Spike times for each unit.
|
array:
|
||||||
range: Units__spike_times
|
dimensions:
|
||||||
|
- alias: num_intervals
|
||||||
|
- alias: start_end
|
||||||
|
exact_cardinality: 2
|
||||||
|
range: float64
|
||||||
required: false
|
required: false
|
||||||
multivalued: false
|
multivalued: false
|
||||||
obs_intervals_index:
|
obs_intervals_index:
|
||||||
|
@ -291,21 +458,14 @@ classes:
|
||||||
value: neurodata_type_inc
|
value: neurodata_type_inc
|
||||||
description: Index into the obs_intervals dataset.
|
description: Index into the obs_intervals dataset.
|
||||||
range: VectorIndex
|
range: VectorIndex
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
spike_times:
|
||||||
obs_intervals:
|
name: spike_times
|
||||||
name: obs_intervals
|
description: Spike times for each unit.
|
||||||
description: Observation intervals for each unit.
|
range: Units__spike_times
|
||||||
array:
|
inlined: true
|
||||||
dimensions:
|
spike_times_index:
|
||||||
- alias: num_intervals
|
name: spike_times_index
|
||||||
- alias: start_end
|
|
||||||
exact_cardinality: 2
|
|
||||||
range: float64
|
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
electrodes_index:
|
|
||||||
name: electrodes_index
|
|
||||||
annotations:
|
annotations:
|
||||||
named:
|
named:
|
||||||
tag: named
|
tag: named
|
||||||
|
@ -313,61 +473,19 @@ classes:
|
||||||
source_type:
|
source_type:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: neurodata_type_inc
|
value: neurodata_type_inc
|
||||||
description: Index into electrodes.
|
description: Index into the spike_times dataset.
|
||||||
range: VectorIndex
|
range: VectorIndex
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
electrodes:
|
|
||||||
name: electrodes
|
|
||||||
annotations:
|
|
||||||
named:
|
|
||||||
tag: named
|
|
||||||
value: true
|
|
||||||
source_type:
|
|
||||||
tag: source_type
|
|
||||||
value: neurodata_type_inc
|
|
||||||
description: Electrode that each spike unit came from, specified using a DynamicTableRegion.
|
|
||||||
range: DynamicTableRegion
|
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
electrode_group:
|
|
||||||
name: electrode_group
|
|
||||||
description: Electrode group that each spike unit came from.
|
|
||||||
range: ElectrodeGroup
|
|
||||||
required: false
|
|
||||||
multivalued: true
|
|
||||||
waveform_mean:
|
waveform_mean:
|
||||||
name: waveform_mean
|
name: waveform_mean
|
||||||
description: Spike waveform mean for each spike unit.
|
description: Spike waveform mean for each spike unit.
|
||||||
range: float32
|
range: Units__waveform_mean
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
any_of:
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_units
|
|
||||||
- alias: num_samples
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_units
|
|
||||||
- alias: num_samples
|
|
||||||
- alias: num_electrodes
|
|
||||||
waveform_sd:
|
waveform_sd:
|
||||||
name: waveform_sd
|
name: waveform_sd
|
||||||
description: Spike waveform standard deviation for each spike unit.
|
description: Spike waveform standard deviation for each spike unit.
|
||||||
range: float32
|
range: Units__waveform_sd
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
any_of:
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_units
|
|
||||||
- alias: num_samples
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_units
|
|
||||||
- alias: num_samples
|
|
||||||
- alias: num_electrodes
|
|
||||||
tree_root: true
|
tree_root: true
|
||||||
Units__spike_times:
|
Units__spike_times:
|
||||||
name: Units__spike_times
|
name: Units__spike_times
|
||||||
|
@ -377,6 +495,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(spike_times)
|
ifabsent: string(spike_times)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: spike_times
|
equals_string: spike_times
|
||||||
|
@ -389,3 +508,51 @@ classes:
|
||||||
for the spike time to be between samples.
|
for the spike time to be between samples.
|
||||||
range: float64
|
range: float64
|
||||||
required: false
|
required: false
|
||||||
|
Units__waveform_mean:
|
||||||
|
name: Units__waveform_mean
|
||||||
|
description: Spike waveform mean for each spike unit.
|
||||||
|
is_a: VectorData
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(waveform_mean)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: waveform_mean
|
||||||
|
sampling_rate:
|
||||||
|
name: sampling_rate
|
||||||
|
description: Sampling rate, in hertz.
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
description: Unit of measurement. This value is fixed to 'volts'.
|
||||||
|
ifabsent: string(volts)
|
||||||
|
range: text
|
||||||
|
required: false
|
||||||
|
equals_string: volts
|
||||||
|
Units__waveform_sd:
|
||||||
|
name: Units__waveform_sd
|
||||||
|
description: Spike waveform standard deviation for each spike unit.
|
||||||
|
is_a: VectorData
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(waveform_sd)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: waveform_sd
|
||||||
|
sampling_rate:
|
||||||
|
name: sampling_rate
|
||||||
|
description: Sampling rate, in hertz.
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
description: Unit of measurement. This value is fixed to 'volts'.
|
||||||
|
ifabsent: string(volts)
|
||||||
|
range: text
|
||||||
|
required: false
|
||||||
|
equals_string: volts
|
||||||
|
|
|
@ -21,17 +21,15 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
name: data
|
name: data
|
||||||
description: Applied power for optogenetic stimulus, in watts.
|
description: Applied power for optogenetic stimulus, in watts.
|
||||||
array:
|
range: OptogeneticSeries__data
|
||||||
dimensions:
|
|
||||||
- alias: num_times
|
|
||||||
range: numeric
|
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
site:
|
site:
|
||||||
name: site
|
name: site
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -39,11 +37,58 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: OptogeneticStimulusSite
|
- range: OptogeneticStimulusSite
|
||||||
- range: string
|
- range: string
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
OptogeneticSeries__data:
|
||||||
|
name: OptogeneticSeries__data
|
||||||
|
description: Applied power for optogenetic stimulus, in watts.
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
description: Unit of measurement for data, which is fixed to 'watts'.
|
||||||
|
ifabsent: string(watts)
|
||||||
|
range: text
|
||||||
|
required: true
|
||||||
|
equals_string: watts
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
range: numeric
|
||||||
OptogeneticStimulusSite:
|
OptogeneticStimulusSite:
|
||||||
name: OptogeneticStimulusSite
|
name: OptogeneticStimulusSite
|
||||||
description: A site of optogenetic stimulation.
|
description: A site of optogenetic stimulation.
|
||||||
|
@ -51,6 +96,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
@ -58,13 +104,11 @@ classes:
|
||||||
description: Description of stimulation site.
|
description: Description of stimulation site.
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
excitation_lambda:
|
excitation_lambda:
|
||||||
name: excitation_lambda
|
name: excitation_lambda
|
||||||
description: Excitation wavelength, in nm.
|
description: Excitation wavelength, in nm.
|
||||||
range: float32
|
range: float32
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
location:
|
location:
|
||||||
name: location
|
name: location
|
||||||
description: Location of the stimulation site. Specify the area, layer, comments
|
description: Location of the stimulation site. Specify the area, layer, comments
|
||||||
|
@ -72,7 +116,6 @@ classes:
|
||||||
standard atlas names for anatomical regions when possible.
|
standard atlas names for anatomical regions when possible.
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
device:
|
device:
|
||||||
name: device
|
name: device
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -80,7 +123,7 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: Device
|
- range: Device
|
||||||
- range: string
|
- range: string
|
||||||
|
|
|
@ -23,6 +23,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
pmt_gain:
|
pmt_gain:
|
||||||
|
@ -59,7 +60,7 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: ImagingPlane
|
- range: ImagingPlane
|
||||||
- range: string
|
- range: string
|
||||||
|
@ -72,22 +73,15 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
name: data
|
name: data
|
||||||
description: Signals from ROIs.
|
description: Signals from ROIs.
|
||||||
range: numeric
|
range: RoiResponseSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_times
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_times
|
|
||||||
- alias: num_rois
|
|
||||||
rois:
|
rois:
|
||||||
name: rois
|
name: rois
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -101,8 +95,60 @@ classes:
|
||||||
on the ROIs stored in this timeseries.
|
on the ROIs stored in this timeseries.
|
||||||
range: DynamicTableRegion
|
range: DynamicTableRegion
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
RoiResponseSeries__data:
|
||||||
|
name: RoiResponseSeries__data
|
||||||
|
description: Signals from ROIs.
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
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'.
|
||||||
|
range: text
|
||||||
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
range: numeric
|
||||||
|
any_of:
|
||||||
|
- array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
- array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
- alias: num_rois
|
||||||
DfOverF:
|
DfOverF:
|
||||||
name: DfOverF
|
name: DfOverF
|
||||||
description: dF/F information about a region of interest (ROI). Storage hierarchy
|
description: dF/F information about a region of interest (ROI). Storage hierarchy
|
||||||
|
@ -110,12 +156,19 @@ classes:
|
||||||
for image planes).
|
for image planes).
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(DfOverF)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: RoiResponseSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: RoiResponseSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
Fluorescence:
|
Fluorescence:
|
||||||
name: Fluorescence
|
name: Fluorescence
|
||||||
|
@ -124,12 +177,19 @@ classes:
|
||||||
for ROIs and for image planes).
|
for ROIs and for image planes).
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(Fluorescence)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: RoiResponseSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: RoiResponseSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
ImageSegmentation:
|
ImageSegmentation:
|
||||||
name: ImageSegmentation
|
name: ImageSegmentation
|
||||||
|
@ -142,12 +202,19 @@ classes:
|
||||||
is required and ROI names should remain consistent between them.
|
is required and ROI names should remain consistent between them.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(ImageSegmentation)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: DynamicTable
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: DynamicTable
|
||||||
tree_root: true
|
tree_root: true
|
||||||
ImagingPlane:
|
ImagingPlane:
|
||||||
name: ImagingPlane
|
name: ImagingPlane
|
||||||
|
@ -156,32 +223,28 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
name: description
|
name: description
|
||||||
description: Description of the imaging plane.
|
description: Description of the imaging plane.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
excitation_lambda:
|
excitation_lambda:
|
||||||
name: excitation_lambda
|
name: excitation_lambda
|
||||||
description: Excitation wavelength, in nm.
|
description: Excitation wavelength, in nm.
|
||||||
range: float32
|
range: float32
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
imaging_rate:
|
imaging_rate:
|
||||||
name: imaging_rate
|
name: imaging_rate
|
||||||
description: Rate that images are acquired, in Hz.
|
description: Rate that images are acquired, in Hz.
|
||||||
range: float32
|
range: float32
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
indicator:
|
indicator:
|
||||||
name: indicator
|
name: indicator
|
||||||
description: Calcium indicator.
|
description: Calcium indicator.
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
location:
|
location:
|
||||||
name: location
|
name: location
|
||||||
description: Location of the imaging plane. Specify the area, layer, comments
|
description: Location of the imaging plane. Specify the area, layer, comments
|
||||||
|
@ -189,31 +252,27 @@ classes:
|
||||||
standard atlas names for anatomical regions when possible.
|
standard atlas names for anatomical regions when possible.
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
manifold:
|
manifold:
|
||||||
name: manifold
|
name: manifold
|
||||||
description: DEPRECATED Physical position of each pixel. 'xyz' represents
|
description: DEPRECATED Physical position of each pixel. 'xyz' represents
|
||||||
the position of the pixel relative to the defined coordinate space. Deprecated
|
the position of the pixel relative to the defined coordinate space. Deprecated
|
||||||
in favor of origin_coords and grid_spacing.
|
in favor of origin_coords and grid_spacing.
|
||||||
range: ImagingPlane__manifold
|
range: ImagingPlane__manifold
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
origin_coords:
|
origin_coords:
|
||||||
name: origin_coords
|
name: origin_coords
|
||||||
description: Physical location of the first element of the imaging plane (0,
|
description: Physical location of the first element of the imaging plane (0,
|
||||||
0) for 2-D data or (0, 0, 0) for 3-D data. See also reference_frame for
|
0) for 2-D data or (0, 0, 0) for 3-D data. See also reference_frame for
|
||||||
what the physical location is relative to (e.g., bregma).
|
what the physical location is relative to (e.g., bregma).
|
||||||
range: ImagingPlane__origin_coords
|
range: ImagingPlane__origin_coords
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
grid_spacing:
|
grid_spacing:
|
||||||
name: grid_spacing
|
name: grid_spacing
|
||||||
description: Space between pixels in (x, y) or voxels in (x, y, z) directions,
|
description: Space between pixels in (x, y) or voxels in (x, y, z) directions,
|
||||||
in the specified unit. Assumes imaging plane is a regular grid. See also
|
in the specified unit. Assumes imaging plane is a regular grid. See also
|
||||||
reference_frame to interpret the grid.
|
reference_frame to interpret the grid.
|
||||||
range: ImagingPlane__grid_spacing
|
range: ImagingPlane__grid_spacing
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
reference_frame:
|
reference_frame:
|
||||||
name: reference_frame
|
name: reference_frame
|
||||||
description: Describes reference frame of origin_coords and grid_spacing.
|
description: Describes reference frame of origin_coords and grid_spacing.
|
||||||
|
@ -234,14 +293,13 @@ classes:
|
||||||
axis (larger index = more rightward). Third dimension corresponds to dorsal-ventral
|
axis (larger index = more rightward). Third dimension corresponds to dorsal-ventral
|
||||||
axis (larger index = more ventral)."
|
axis (larger index = more ventral)."
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
optical_channel:
|
optical_channel:
|
||||||
name: optical_channel
|
name: optical_channel
|
||||||
description: An optical channel used to record from an imaging plane.
|
description: An optical channel used to record from an imaging plane.
|
||||||
range: OpticalChannel
|
range: OpticalChannel
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
|
inlined_as_list: true
|
||||||
device:
|
device:
|
||||||
name: device
|
name: device
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -249,7 +307,7 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: Device
|
- range: Device
|
||||||
- range: string
|
- range: string
|
||||||
|
@ -263,6 +321,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(manifold)
|
ifabsent: string(manifold)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: manifold
|
equals_string: manifold
|
||||||
|
@ -312,6 +371,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(origin_coords)
|
ifabsent: string(origin_coords)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: origin_coords
|
equals_string: origin_coords
|
||||||
|
@ -339,6 +399,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(grid_spacing)
|
ifabsent: string(grid_spacing)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: grid_spacing
|
equals_string: grid_spacing
|
||||||
|
@ -364,6 +425,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
@ -371,13 +433,11 @@ classes:
|
||||||
description: Description or other notes about the channel.
|
description: Description or other notes about the channel.
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
emission_lambda:
|
emission_lambda:
|
||||||
name: emission_lambda
|
name: emission_lambda
|
||||||
description: Emission wavelength for channel, in nm.
|
description: Emission wavelength for channel, in nm.
|
||||||
range: float32
|
range: float32
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
MotionCorrection:
|
MotionCorrection:
|
||||||
name: MotionCorrection
|
name: MotionCorrection
|
||||||
description: 'An image stack where all frames are shifted (registered) to a common
|
description: 'An image stack where all frames are shifted (registered) to a common
|
||||||
|
@ -385,10 +445,17 @@ classes:
|
||||||
frame at each point in time is assumed to be 2-D (has only x & y dimensions).'
|
frame at each point in time is assumed to be 2-D (has only x & y dimensions).'
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(MotionCorrection)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: NWBDataInterface
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: NWBDataInterface
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
|
|
@ -21,6 +21,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
dimension:
|
dimension:
|
||||||
|
@ -52,6 +53,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
unit:
|
unit:
|
||||||
|
@ -75,6 +77,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
bits_per_pixel:
|
bits_per_pixel:
|
||||||
|
@ -115,6 +118,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(ImagingRetinotopy)
|
ifabsent: string(ImagingRetinotopy)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
axis_1_phase_map:
|
axis_1_phase_map:
|
||||||
|
@ -129,7 +133,7 @@ classes:
|
||||||
description: Phase response to stimulus on the first measured axis.
|
description: Phase response to stimulus on the first measured axis.
|
||||||
range: AxisMap
|
range: AxisMap
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
axis_1_power_map:
|
axis_1_power_map:
|
||||||
name: axis_1_power_map
|
name: axis_1_power_map
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -142,8 +146,7 @@ classes:
|
||||||
description: Power response on the first measured axis. Response is scaled
|
description: Power response on the first measured axis. Response is scaled
|
||||||
so 0.0 is no power in the response and 1.0 is maximum relative power.
|
so 0.0 is no power in the response and 1.0 is maximum relative power.
|
||||||
range: AxisMap
|
range: AxisMap
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
axis_2_phase_map:
|
axis_2_phase_map:
|
||||||
name: axis_2_phase_map
|
name: axis_2_phase_map
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -156,7 +159,7 @@ classes:
|
||||||
description: Phase response to stimulus on the second measured axis.
|
description: Phase response to stimulus on the second measured axis.
|
||||||
range: AxisMap
|
range: AxisMap
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
axis_2_power_map:
|
axis_2_power_map:
|
||||||
name: axis_2_power_map
|
name: axis_2_power_map
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -168,8 +171,7 @@ classes:
|
||||||
value: neurodata_type_inc
|
value: neurodata_type_inc
|
||||||
description: Power response to stimulus on the second measured axis.
|
description: Power response to stimulus on the second measured axis.
|
||||||
range: AxisMap
|
range: AxisMap
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
sign_map:
|
sign_map:
|
||||||
name: sign_map
|
name: sign_map
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -183,7 +185,7 @@ classes:
|
||||||
and axis_2.
|
and axis_2.
|
||||||
range: RetinotopyMap
|
range: RetinotopyMap
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
axis_descriptions:
|
axis_descriptions:
|
||||||
name: axis_descriptions
|
name: axis_descriptions
|
||||||
description: Two-element array describing the contents of the two response
|
description: Two-element array describing the contents of the two response
|
||||||
|
@ -202,7 +204,7 @@ classes:
|
||||||
focal depth, wavelength) as data collection. Array format: [rows][columns].'
|
focal depth, wavelength) as data collection. Array format: [rows][columns].'
|
||||||
range: ImagingRetinotopy__focal_depth_image
|
range: ImagingRetinotopy__focal_depth_image
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
vasculature_image:
|
vasculature_image:
|
||||||
name: vasculature_image
|
name: vasculature_image
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -216,7 +218,7 @@ classes:
|
||||||
[rows][columns]'
|
[rows][columns]'
|
||||||
range: RetinotopyImage
|
range: RetinotopyImage
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
ImagingRetinotopy__focal_depth_image:
|
ImagingRetinotopy__focal_depth_image:
|
||||||
name: ImagingRetinotopy__focal_depth_image
|
name: ImagingRetinotopy__focal_depth_image
|
||||||
|
@ -227,6 +229,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(focal_depth_image)
|
ifabsent: string(focal_depth_image)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: focal_depth_image
|
equals_string: focal_depth_image
|
||||||
|
|
|
@ -20,6 +20,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
@ -32,6 +33,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
resolution:
|
resolution:
|
||||||
|
@ -73,6 +75,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
@ -84,6 +87,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
@ -94,6 +98,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
@ -118,15 +123,14 @@ classes:
|
||||||
external file.
|
external file.
|
||||||
range: TimeSeries__data
|
range: TimeSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
starting_time:
|
starting_time:
|
||||||
name: starting_time
|
name: starting_time
|
||||||
description: Timestamp of the first sample in seconds. When timestamps are
|
description: Timestamp of the first sample in seconds. When timestamps are
|
||||||
uniformly spaced, the timestamp of the first sample can be specified and
|
uniformly spaced, the timestamp of the first sample can be specified and
|
||||||
all subsequent ones calculated from the sampling rate attribute.
|
all subsequent ones calculated from the sampling rate attribute.
|
||||||
range: TimeSeries__starting_time
|
range: TimeSeries__starting_time
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
timestamps:
|
timestamps:
|
||||||
name: timestamps
|
name: timestamps
|
||||||
description: Timestamps for samples stored in data, in seconds, relative to
|
description: Timestamps for samples stored in data, in seconds, relative to
|
||||||
|
@ -168,8 +172,8 @@ classes:
|
||||||
external to the NWB file, in files storing raw data. Once timestamp data
|
external to the NWB file, in files storing raw data. Once timestamp data
|
||||||
is calculated, the contents of 'sync' are mostly for archival purposes.
|
is calculated, the contents of 'sync' are mostly for archival purposes.
|
||||||
range: TimeSeries__sync
|
range: TimeSeries__sync
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
inlined_as_list: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
TimeSeries__data:
|
TimeSeries__data:
|
||||||
name: TimeSeries__data
|
name: TimeSeries__data
|
||||||
|
@ -180,6 +184,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(data)
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: data
|
equals_string: data
|
||||||
|
@ -244,6 +249,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(starting_time)
|
ifabsent: string(starting_time)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: starting_time
|
equals_string: starting_time
|
||||||
|
@ -275,6 +281,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(sync)
|
ifabsent: string(sync)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: sync
|
equals_string: sync
|
||||||
|
@ -283,13 +290,24 @@ classes:
|
||||||
description: A collection of processed data.
|
description: A collection of processed data.
|
||||||
is_a: NWBContainer
|
is_a: NWBContainer
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
identifier: true
|
||||||
inlined_as_list: false
|
range: string
|
||||||
any_of:
|
required: true
|
||||||
- range: NWBDataInterface
|
description:
|
||||||
- range: DynamicTable
|
name: description
|
||||||
|
description: Description of this collection of processed data.
|
||||||
|
range: text
|
||||||
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: NWBDataInterface
|
||||||
|
- range: DynamicTable
|
||||||
tree_root: true
|
tree_root: true
|
||||||
Images:
|
Images:
|
||||||
name: Images
|
name: Images
|
||||||
|
@ -299,6 +317,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(Images)
|
ifabsent: string(Images)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -29,6 +29,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
|
@ -37,13 +38,11 @@ classes:
|
||||||
reference frame.
|
reference frame.
|
||||||
range: SpatialSeries__data
|
range: SpatialSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
reference_frame:
|
reference_frame:
|
||||||
name: reference_frame
|
name: reference_frame
|
||||||
description: Description defining what exactly 'straight-ahead' means.
|
description: Description defining what exactly 'straight-ahead' means.
|
||||||
range: text
|
range: text
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
tree_root: true
|
tree_root: true
|
||||||
SpatialSeries__data:
|
SpatialSeries__data:
|
||||||
name: SpatialSeries__data
|
name: SpatialSeries__data
|
||||||
|
@ -53,9 +52,33 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(data)
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: data
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
unit:
|
unit:
|
||||||
name: unit
|
name: unit
|
||||||
description: Base unit of measurement for working with the data. The default
|
description: Base unit of measurement for working with the data. The default
|
||||||
|
@ -91,12 +114,19 @@ classes:
|
||||||
events. BehavioralTimeSeries is for continuous data.
|
events. BehavioralTimeSeries is for continuous data.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(BehavioralEpochs)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: IntervalSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: IntervalSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
BehavioralEvents:
|
BehavioralEvents:
|
||||||
name: BehavioralEvents
|
name: BehavioralEvents
|
||||||
|
@ -104,12 +134,19 @@ classes:
|
||||||
for more details.
|
for more details.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(BehavioralEvents)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: TimeSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: TimeSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
BehavioralTimeSeries:
|
BehavioralTimeSeries:
|
||||||
name: BehavioralTimeSeries
|
name: BehavioralTimeSeries
|
||||||
|
@ -117,36 +154,57 @@ classes:
|
||||||
of <a href="#BehavioralEpochs">BehavioralEpochs</a> for more details.
|
of <a href="#BehavioralEpochs">BehavioralEpochs</a> for more details.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(BehavioralTimeSeries)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: TimeSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: TimeSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
PupilTracking:
|
PupilTracking:
|
||||||
name: PupilTracking
|
name: PupilTracking
|
||||||
description: Eye-tracking data, representing pupil size.
|
description: Eye-tracking data, representing pupil size.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(PupilTracking)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: TimeSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: TimeSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
EyeTracking:
|
EyeTracking:
|
||||||
name: EyeTracking
|
name: EyeTracking
|
||||||
description: Eye-tracking data, representing direction of gaze.
|
description: Eye-tracking data, representing direction of gaze.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(EyeTracking)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: SpatialSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: SpatialSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
CompassDirection:
|
CompassDirection:
|
||||||
name: CompassDirection
|
name: CompassDirection
|
||||||
|
@ -157,22 +215,36 @@ classes:
|
||||||
be radians or degrees.
|
be radians or degrees.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(CompassDirection)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: SpatialSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: SpatialSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
Position:
|
Position:
|
||||||
name: Position
|
name: Position
|
||||||
description: Position data, whether along the x, x/y or x/y/z axis.
|
description: Position data, whether along the x, x/y or x/y/z axis.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(Position)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: SpatialSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: SpatialSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
|
|
@ -21,6 +21,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -25,41 +25,9 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
|
||||||
name: data
|
|
||||||
description: Recorded voltage data.
|
|
||||||
range: numeric
|
|
||||||
required: true
|
|
||||||
multivalued: false
|
|
||||||
any_of:
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_times
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_times
|
|
||||||
- alias: num_channels
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_times
|
|
||||||
- alias: num_channels
|
|
||||||
- alias: num_samples
|
|
||||||
electrodes:
|
|
||||||
name: electrodes
|
|
||||||
annotations:
|
|
||||||
named:
|
|
||||||
tag: named
|
|
||||||
value: true
|
|
||||||
source_type:
|
|
||||||
tag: source_type
|
|
||||||
value: neurodata_type_inc
|
|
||||||
description: DynamicTableRegion pointer to the electrodes that this time series
|
|
||||||
was generated from.
|
|
||||||
range: DynamicTableRegion
|
|
||||||
required: true
|
|
||||||
multivalued: false
|
|
||||||
channel_conversion:
|
channel_conversion:
|
||||||
name: channel_conversion
|
name: channel_conversion
|
||||||
description: Channel-specific conversion factor. Multiply the data in the
|
description: Channel-specific conversion factor. Multiply the data in the
|
||||||
|
@ -77,7 +45,87 @@ classes:
|
||||||
range: float32
|
range: float32
|
||||||
required: false
|
required: false
|
||||||
multivalued: false
|
multivalued: false
|
||||||
|
data:
|
||||||
|
name: data
|
||||||
|
description: Recorded voltage data.
|
||||||
|
range: ElectricalSeries__data
|
||||||
|
required: true
|
||||||
|
inlined: true
|
||||||
|
electrodes:
|
||||||
|
name: electrodes
|
||||||
|
annotations:
|
||||||
|
named:
|
||||||
|
tag: named
|
||||||
|
value: true
|
||||||
|
source_type:
|
||||||
|
tag: source_type
|
||||||
|
value: neurodata_type_inc
|
||||||
|
description: DynamicTableRegion pointer to the electrodes that this time series
|
||||||
|
was generated from.
|
||||||
|
range: DynamicTableRegion
|
||||||
|
required: true
|
||||||
|
inlined: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
ElectricalSeries__data:
|
||||||
|
name: ElectricalSeries__data
|
||||||
|
description: Recorded voltage data.
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
description: Base unit of measurement for working with the data. This value
|
||||||
|
is fixed to 'volts'. Actual stored values are not necessarily stored in
|
||||||
|
these units. To access the data in these units, multiply 'data' by 'conversion'
|
||||||
|
and 'channel_conversion' (if present).
|
||||||
|
ifabsent: string(volts)
|
||||||
|
range: text
|
||||||
|
required: true
|
||||||
|
equals_string: volts
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
range: numeric
|
||||||
|
any_of:
|
||||||
|
- array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
- array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
- alias: num_channels
|
||||||
|
- array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_times
|
||||||
|
- alias: num_channels
|
||||||
|
- alias: num_samples
|
||||||
SpikeEventSeries:
|
SpikeEventSeries:
|
||||||
name: SpikeEventSeries
|
name: SpikeEventSeries
|
||||||
description: 'Stores snapshots/snippets of recorded spike events (i.e., threshold
|
description: 'Stores snapshots/snippets of recorded spike events (i.e., threshold
|
||||||
|
@ -92,24 +140,15 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
data:
|
data:
|
||||||
name: data
|
name: data
|
||||||
description: Spike waveforms.
|
description: Spike waveforms.
|
||||||
range: numeric
|
range: SpikeEventSeries__data
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_events
|
|
||||||
- alias: num_samples
|
|
||||||
- array:
|
|
||||||
dimensions:
|
|
||||||
- alias: num_events
|
|
||||||
- alias: num_channels
|
|
||||||
- alias: num_samples
|
|
||||||
timestamps:
|
timestamps:
|
||||||
name: timestamps
|
name: timestamps
|
||||||
description: Timestamps for samples stored in data, in seconds, relative to
|
description: Timestamps for samples stored in data, in seconds, relative to
|
||||||
|
@ -123,6 +162,60 @@ classes:
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
multivalued: false
|
||||||
tree_root: true
|
tree_root: true
|
||||||
|
SpikeEventSeries__data:
|
||||||
|
name: SpikeEventSeries__data
|
||||||
|
description: Spike waveforms.
|
||||||
|
attributes:
|
||||||
|
name:
|
||||||
|
name: name
|
||||||
|
ifabsent: string(data)
|
||||||
|
identifier: true
|
||||||
|
range: string
|
||||||
|
required: true
|
||||||
|
equals_string: data
|
||||||
|
conversion:
|
||||||
|
name: conversion
|
||||||
|
description: Scalar to multiply each element in data to convert it to the
|
||||||
|
specified 'unit'. If the data are stored in acquisition system units or
|
||||||
|
other units that require a conversion to be interpretable, multiply the
|
||||||
|
data by 'conversion' to convert the data to the specified 'unit'. e.g. if
|
||||||
|
the data acquisition system stores values in this object as signed 16-bit
|
||||||
|
integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V
|
||||||
|
to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion'
|
||||||
|
multiplier to get from raw data acquisition values to recorded volts is
|
||||||
|
2.5/32768/8000 = 9.5367e-9.
|
||||||
|
ifabsent: float(1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
resolution:
|
||||||
|
name: resolution
|
||||||
|
description: Smallest meaningful difference between values in data, stored
|
||||||
|
in the specified by unit, e.g., the change in value of the least significant
|
||||||
|
bit, or a larger number if signal noise is known to be present. If unknown,
|
||||||
|
use -1.0.
|
||||||
|
ifabsent: float(-1.0)
|
||||||
|
range: float32
|
||||||
|
required: false
|
||||||
|
unit:
|
||||||
|
name: unit
|
||||||
|
description: Unit of measurement for waveforms, which is fixed to 'volts'.
|
||||||
|
ifabsent: string(volts)
|
||||||
|
range: text
|
||||||
|
required: true
|
||||||
|
equals_string: volts
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
range: numeric
|
||||||
|
any_of:
|
||||||
|
- array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_events
|
||||||
|
- alias: num_samples
|
||||||
|
- array:
|
||||||
|
dimensions:
|
||||||
|
- alias: num_events
|
||||||
|
- alias: num_channels
|
||||||
|
- alias: num_samples
|
||||||
FeatureExtraction:
|
FeatureExtraction:
|
||||||
name: FeatureExtraction
|
name: FeatureExtraction
|
||||||
description: Features, such as PC1 and PC2, that are extracted from signals stored
|
description: Features, such as PC1 and PC2, that are extracted from signals stored
|
||||||
|
@ -132,6 +225,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(FeatureExtraction)
|
ifabsent: string(FeatureExtraction)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
@ -177,7 +271,7 @@ classes:
|
||||||
was generated from.
|
was generated from.
|
||||||
range: DynamicTableRegion
|
range: DynamicTableRegion
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
tree_root: true
|
tree_root: true
|
||||||
EventDetection:
|
EventDetection:
|
||||||
name: EventDetection
|
name: EventDetection
|
||||||
|
@ -187,6 +281,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(EventDetection)
|
ifabsent: string(EventDetection)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
detection_method:
|
detection_method:
|
||||||
|
@ -195,7 +290,6 @@ classes:
|
||||||
or dV/dT threshold, as well as relevant values.
|
or dV/dT threshold, as well as relevant values.
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
source_idx:
|
source_idx:
|
||||||
name: source_idx
|
name: source_idx
|
||||||
description: Indices (zero-based) into source ElectricalSeries::data array
|
description: Indices (zero-based) into source ElectricalSeries::data array
|
||||||
|
@ -224,7 +318,7 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: ElectricalSeries
|
- range: ElectricalSeries
|
||||||
- range: string
|
- range: string
|
||||||
|
@ -236,12 +330,19 @@ classes:
|
||||||
during experiment acquisition.
|
during experiment acquisition.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(EventWaveform)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: SpikeEventSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: SpikeEventSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
FilteredEphys:
|
FilteredEphys:
|
||||||
name: FilteredEphys
|
name: FilteredEphys
|
||||||
|
@ -258,12 +359,19 @@ classes:
|
||||||
the ElectricalSeries.
|
the ElectricalSeries.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(FilteredEphys)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: ElectricalSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: ElectricalSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
LFP:
|
LFP:
|
||||||
name: LFP
|
name: LFP
|
||||||
|
@ -272,12 +380,19 @@ classes:
|
||||||
properties should be noted in the ElectricalSeries description or comments field.
|
properties should be noted in the ElectricalSeries description or comments field.
|
||||||
is_a: NWBDataInterface
|
is_a: NWBDataInterface
|
||||||
attributes:
|
attributes:
|
||||||
- name: value
|
name:
|
||||||
multivalued: true
|
name: name
|
||||||
inlined: true
|
ifabsent: string(LFP)
|
||||||
inlined_as_list: false
|
identifier: true
|
||||||
any_of:
|
range: string
|
||||||
- range: ElectricalSeries
|
required: true
|
||||||
|
value:
|
||||||
|
name: value
|
||||||
|
multivalued: true
|
||||||
|
inlined: true
|
||||||
|
inlined_as_list: false
|
||||||
|
any_of:
|
||||||
|
- range: ElectricalSeries
|
||||||
tree_root: true
|
tree_root: true
|
||||||
ElectrodeGroup:
|
ElectrodeGroup:
|
||||||
name: ElectrodeGroup
|
name: ElectrodeGroup
|
||||||
|
@ -286,6 +401,7 @@ classes:
|
||||||
attributes:
|
attributes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
@ -304,8 +420,7 @@ classes:
|
||||||
name: position
|
name: position
|
||||||
description: stereotaxic or common framework coordinates
|
description: stereotaxic or common framework coordinates
|
||||||
range: ElectrodeGroup__position
|
range: ElectrodeGroup__position
|
||||||
required: false
|
inlined: true
|
||||||
multivalued: false
|
|
||||||
device:
|
device:
|
||||||
name: device
|
name: device
|
||||||
annotations:
|
annotations:
|
||||||
|
@ -313,7 +428,7 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: Device
|
- range: Device
|
||||||
- range: string
|
- range: string
|
||||||
|
@ -325,6 +440,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(position)
|
ifabsent: string(position)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
equals_string: position
|
equals_string: position
|
||||||
|
@ -334,24 +450,18 @@ classes:
|
||||||
array:
|
array:
|
||||||
exact_number_dimensions: 1
|
exact_number_dimensions: 1
|
||||||
range: float32
|
range: float32
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
y:
|
y:
|
||||||
name: y
|
name: y
|
||||||
description: y coordinate
|
description: y coordinate
|
||||||
array:
|
array:
|
||||||
exact_number_dimensions: 1
|
exact_number_dimensions: 1
|
||||||
range: float32
|
range: float32
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
z:
|
z:
|
||||||
name: z
|
name: z
|
||||||
description: z coordinate
|
description: z coordinate
|
||||||
array:
|
array:
|
||||||
exact_number_dimensions: 1
|
exact_number_dimensions: 1
|
||||||
range: float32
|
range: float32
|
||||||
required: false
|
|
||||||
multivalued: false
|
|
||||||
ClusterWaveforms:
|
ClusterWaveforms:
|
||||||
name: ClusterWaveforms
|
name: ClusterWaveforms
|
||||||
description: DEPRECATED The mean waveform shape, including standard deviation,
|
description: DEPRECATED The mean waveform shape, including standard deviation,
|
||||||
|
@ -365,6 +475,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(ClusterWaveforms)
|
ifabsent: string(ClusterWaveforms)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
waveform_filtering:
|
waveform_filtering:
|
||||||
|
@ -372,7 +483,6 @@ classes:
|
||||||
description: Filtering applied to data before generating mean/sd
|
description: Filtering applied to data before generating mean/sd
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
waveform_mean:
|
waveform_mean:
|
||||||
name: waveform_mean
|
name: waveform_mean
|
||||||
description: The mean waveform for each cluster, using the same indices for
|
description: The mean waveform for each cluster, using the same indices for
|
||||||
|
@ -404,7 +514,7 @@ classes:
|
||||||
tag: source_type
|
tag: source_type
|
||||||
value: link
|
value: link
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
inlined: true
|
||||||
any_of:
|
any_of:
|
||||||
- range: Clustering
|
- range: Clustering
|
||||||
- range: string
|
- range: string
|
||||||
|
@ -418,6 +528,7 @@ classes:
|
||||||
name:
|
name:
|
||||||
name: name
|
name: name
|
||||||
ifabsent: string(Clustering)
|
ifabsent: string(Clustering)
|
||||||
|
identifier: true
|
||||||
range: string
|
range: string
|
||||||
required: true
|
required: true
|
||||||
description:
|
description:
|
||||||
|
@ -426,7 +537,6 @@ classes:
|
||||||
clusters curated using Klusters, etc)
|
clusters curated using Klusters, etc)
|
||||||
range: text
|
range: text
|
||||||
required: true
|
required: true
|
||||||
multivalued: false
|
|
||||||
num:
|
num:
|
||||||
name: num
|
name: num
|
||||||
description: Cluster number of each event
|
description: Cluster number of each event
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue