From e5d1cc52de760667a548550da8d424256c67de23 Mon Sep 17 00:00:00 2001 From: sneakers-the-rat Date: Mon, 5 Aug 2024 18:41:53 -0700 Subject: [PATCH] regenerate models --- .../pydantic/core/v2_2_0/core_nwb_base.py | 33 +- .../pydantic/core/v2_2_0/core_nwb_behavior.py | 12 +- .../pydantic/core/v2_2_0/core_nwb_ecephys.py | 24 +- .../pydantic/core/v2_2_0/core_nwb_epoch.py | 12 +- .../pydantic/core/v2_2_0/core_nwb_file.py | 15 +- .../pydantic/core/v2_2_0/core_nwb_icephys.py | 159 ++++++---- .../pydantic/core/v2_2_0/core_nwb_image.py | 40 ++- .../pydantic/core/v2_2_0/core_nwb_misc.py | 64 ++-- .../pydantic/core/v2_2_0/core_nwb_ogen.py | 9 +- .../pydantic/core/v2_2_0/core_nwb_ophys.py | 36 ++- .../core/v2_2_0/core_nwb_retinotopy.py | 46 ++- .../pydantic/core/v2_2_1/core_nwb_base.py | 33 +- .../pydantic/core/v2_2_1/core_nwb_behavior.py | 12 +- .../pydantic/core/v2_2_1/core_nwb_ecephys.py | 24 +- .../pydantic/core/v2_2_1/core_nwb_epoch.py | 12 +- .../pydantic/core/v2_2_1/core_nwb_file.py | 15 +- .../pydantic/core/v2_2_1/core_nwb_icephys.py | 159 ++++++---- .../pydantic/core/v2_2_1/core_nwb_image.py | 40 ++- .../pydantic/core/v2_2_1/core_nwb_misc.py | 64 ++-- .../pydantic/core/v2_2_1/core_nwb_ogen.py | 9 +- .../pydantic/core/v2_2_1/core_nwb_ophys.py | 36 ++- .../core/v2_2_1/core_nwb_retinotopy.py | 46 ++- .../pydantic/core/v2_2_2/core_nwb_base.py | 33 +- .../pydantic/core/v2_2_2/core_nwb_behavior.py | 12 +- .../pydantic/core/v2_2_2/core_nwb_ecephys.py | 24 +- .../pydantic/core/v2_2_2/core_nwb_epoch.py | 12 +- .../pydantic/core/v2_2_2/core_nwb_file.py | 15 +- .../pydantic/core/v2_2_2/core_nwb_icephys.py | 159 ++++++---- .../pydantic/core/v2_2_2/core_nwb_image.py | 40 ++- .../pydantic/core/v2_2_2/core_nwb_misc.py | 64 ++-- .../pydantic/core/v2_2_2/core_nwb_ogen.py | 9 +- .../pydantic/core/v2_2_2/core_nwb_ophys.py | 36 ++- .../core/v2_2_2/core_nwb_retinotopy.py | 76 ++--- .../pydantic/core/v2_2_4/core_nwb_base.py | 33 +- .../pydantic/core/v2_2_4/core_nwb_behavior.py | 12 +- .../pydantic/core/v2_2_4/core_nwb_ecephys.py | 24 +- .../pydantic/core/v2_2_4/core_nwb_epoch.py | 12 +- .../pydantic/core/v2_2_4/core_nwb_file.py | 19 +- .../pydantic/core/v2_2_4/core_nwb_icephys.py | 159 ++++++---- .../pydantic/core/v2_2_4/core_nwb_image.py | 40 ++- .../pydantic/core/v2_2_4/core_nwb_misc.py | 64 ++-- .../pydantic/core/v2_2_4/core_nwb_ogen.py | 9 +- .../pydantic/core/v2_2_4/core_nwb_ophys.py | 56 ++-- .../core/v2_2_4/core_nwb_retinotopy.py | 76 ++--- .../pydantic/core/v2_2_5/core_nwb_base.py | 33 +- .../pydantic/core/v2_2_5/core_nwb_behavior.py | 12 +- .../pydantic/core/v2_2_5/core_nwb_ecephys.py | 24 +- .../pydantic/core/v2_2_5/core_nwb_epoch.py | 12 +- .../pydantic/core/v2_2_5/core_nwb_file.py | 19 +- .../pydantic/core/v2_2_5/core_nwb_icephys.py | 159 ++++++---- .../pydantic/core/v2_2_5/core_nwb_image.py | 40 ++- .../pydantic/core/v2_2_5/core_nwb_misc.py | 64 ++-- .../pydantic/core/v2_2_5/core_nwb_ogen.py | 9 +- .../pydantic/core/v2_2_5/core_nwb_ophys.py | 56 ++-- .../core/v2_2_5/core_nwb_retinotopy.py | 76 ++--- .../pydantic/core/v2_3_0/core_nwb_base.py | 33 +- .../pydantic/core/v2_3_0/core_nwb_behavior.py | 12 +- .../pydantic/core/v2_3_0/core_nwb_ecephys.py | 24 +- .../pydantic/core/v2_3_0/core_nwb_epoch.py | 12 +- .../pydantic/core/v2_3_0/core_nwb_file.py | 19 +- .../pydantic/core/v2_3_0/core_nwb_icephys.py | 160 ++++++---- .../pydantic/core/v2_3_0/core_nwb_image.py | 40 ++- .../pydantic/core/v2_3_0/core_nwb_misc.py | 64 ++-- .../pydantic/core/v2_3_0/core_nwb_ogen.py | 9 +- .../pydantic/core/v2_3_0/core_nwb_ophys.py | 56 ++-- .../core/v2_3_0/core_nwb_retinotopy.py | 76 ++--- .../pydantic/core/v2_4_0/core_nwb_base.py | 37 ++- .../pydantic/core/v2_4_0/core_nwb_behavior.py | 12 +- .../pydantic/core/v2_4_0/core_nwb_ecephys.py | 24 +- .../pydantic/core/v2_4_0/core_nwb_epoch.py | 12 +- .../pydantic/core/v2_4_0/core_nwb_file.py | 19 +- .../pydantic/core/v2_4_0/core_nwb_icephys.py | 295 +++++++++++------- .../pydantic/core/v2_4_0/core_nwb_image.py | 40 ++- .../pydantic/core/v2_4_0/core_nwb_misc.py | 64 ++-- .../pydantic/core/v2_4_0/core_nwb_ogen.py | 9 +- .../pydantic/core/v2_4_0/core_nwb_ophys.py | 56 ++-- .../core/v2_4_0/core_nwb_retinotopy.py | 76 ++--- .../pydantic/core/v2_5_0/core_nwb_base.py | 37 ++- .../pydantic/core/v2_5_0/core_nwb_behavior.py | 12 +- .../pydantic/core/v2_5_0/core_nwb_ecephys.py | 24 +- .../pydantic/core/v2_5_0/core_nwb_epoch.py | 8 +- .../pydantic/core/v2_5_0/core_nwb_file.py | 19 +- .../pydantic/core/v2_5_0/core_nwb_icephys.py | 295 +++++++++++------- .../pydantic/core/v2_5_0/core_nwb_image.py | 40 ++- .../pydantic/core/v2_5_0/core_nwb_misc.py | 64 ++-- .../pydantic/core/v2_5_0/core_nwb_ogen.py | 9 +- .../pydantic/core/v2_5_0/core_nwb_ophys.py | 56 ++-- .../core/v2_5_0/core_nwb_retinotopy.py | 76 ++--- .../core/v2_6_0_alpha/core_nwb_base.py | 37 ++- .../core/v2_6_0_alpha/core_nwb_behavior.py | 12 +- .../core/v2_6_0_alpha/core_nwb_ecephys.py | 24 +- .../core/v2_6_0_alpha/core_nwb_epoch.py | 8 +- .../core/v2_6_0_alpha/core_nwb_file.py | 22 +- .../core/v2_6_0_alpha/core_nwb_icephys.py | 295 +++++++++++------- .../core/v2_6_0_alpha/core_nwb_image.py | 40 ++- .../core/v2_6_0_alpha/core_nwb_misc.py | 64 ++-- .../core/v2_6_0_alpha/core_nwb_ogen.py | 9 +- .../core/v2_6_0_alpha/core_nwb_ophys.py | 65 ++-- .../core/v2_6_0_alpha/core_nwb_retinotopy.py | 76 ++--- .../pydantic/core/v2_7_0/core_nwb_base.py | 37 ++- .../pydantic/core/v2_7_0/core_nwb_behavior.py | 12 +- .../pydantic/core/v2_7_0/core_nwb_ecephys.py | 24 +- .../pydantic/core/v2_7_0/core_nwb_epoch.py | 8 +- .../pydantic/core/v2_7_0/core_nwb_file.py | 22 +- .../pydantic/core/v2_7_0/core_nwb_icephys.py | 295 +++++++++++------- .../pydantic/core/v2_7_0/core_nwb_image.py | 40 ++- .../pydantic/core/v2_7_0/core_nwb_misc.py | 64 ++-- .../pydantic/core/v2_7_0/core_nwb_ogen.py | 9 +- .../pydantic/core/v2_7_0/core_nwb_ophys.py | 65 ++-- .../core/v2_7_0/core_nwb_retinotopy.py | 76 ++--- .../hdmf_common/v1_1_0/hdmf_common_sparse.py | 10 +- .../hdmf_common/v1_1_0/hdmf_common_table.py | 28 +- .../hdmf_common/v1_1_2/hdmf_common_sparse.py | 10 +- .../hdmf_common/v1_1_2/hdmf_common_table.py | 28 +- .../hdmf_common/v1_1_3/hdmf_common_sparse.py | 10 +- .../hdmf_common/v1_1_3/hdmf_common_table.py | 28 +- .../hdmf_common/v1_5_0/hdmf_common_sparse.py | 4 +- .../hdmf_common/v1_5_0/hdmf_common_table.py | 36 +-- .../hdmf_common/v1_8_0/hdmf_common_sparse.py | 4 +- .../hdmf_common/v1_8_0/hdmf_common_table.py | 36 +-- .../v0_1_0/hdmf_experimental_experimental.py | 8 +- .../v0_5_0/hdmf_experimental_experimental.py | 8 +- .../linkml/core/v2_2_0/core.nwb.base.yaml | 16 + .../linkml/core/v2_2_0/core.nwb.behavior.yaml | 2 + .../linkml/core/v2_2_0/core.nwb.device.yaml | 2 + .../linkml/core/v2_2_0/core.nwb.ecephys.yaml | 2 + .../linkml/core/v2_2_0/core.nwb.file.yaml | 4 + .../linkml/core/v2_2_0/core.nwb.icephys.yaml | 36 +++ .../linkml/core/v2_2_0/core.nwb.image.yaml | 2 + .../linkml/core/v2_2_0/core.nwb.misc.yaml | 5 + .../linkml/core/v2_2_0/core.nwb.ophys.yaml | 10 + .../core/v2_2_0/core.nwb.retinotopy.yaml | 12 + .../linkml/core/v2_2_1/core.nwb.base.yaml | 16 + .../linkml/core/v2_2_1/core.nwb.behavior.yaml | 2 + .../linkml/core/v2_2_1/core.nwb.device.yaml | 2 + .../linkml/core/v2_2_1/core.nwb.ecephys.yaml | 2 + .../linkml/core/v2_2_1/core.nwb.file.yaml | 4 + .../linkml/core/v2_2_1/core.nwb.icephys.yaml | 36 +++ .../linkml/core/v2_2_1/core.nwb.image.yaml | 2 + .../linkml/core/v2_2_1/core.nwb.misc.yaml | 5 + .../linkml/core/v2_2_1/core.nwb.ophys.yaml | 10 + .../core/v2_2_1/core.nwb.retinotopy.yaml | 12 + .../linkml/core/v2_2_2/core.nwb.base.yaml | 16 + .../linkml/core/v2_2_2/core.nwb.behavior.yaml | 2 + .../linkml/core/v2_2_2/core.nwb.device.yaml | 2 + .../linkml/core/v2_2_2/core.nwb.ecephys.yaml | 2 + .../linkml/core/v2_2_2/core.nwb.file.yaml | 4 + .../linkml/core/v2_2_2/core.nwb.icephys.yaml | 36 +++ .../linkml/core/v2_2_2/core.nwb.image.yaml | 2 + .../linkml/core/v2_2_2/core.nwb.misc.yaml | 5 + .../linkml/core/v2_2_2/core.nwb.ophys.yaml | 10 + .../core/v2_2_2/core.nwb.retinotopy.yaml | 37 +++ .../linkml/core/v2_2_4/core.nwb.base.yaml | 16 + .../linkml/core/v2_2_4/core.nwb.behavior.yaml | 2 + .../linkml/core/v2_2_4/core.nwb.device.yaml | 2 + .../linkml/core/v2_2_4/core.nwb.ecephys.yaml | 2 + .../linkml/core/v2_2_4/core.nwb.file.yaml | 5 + .../linkml/core/v2_2_4/core.nwb.icephys.yaml | 36 +++ .../linkml/core/v2_2_4/core.nwb.image.yaml | 2 + .../linkml/core/v2_2_4/core.nwb.misc.yaml | 5 + .../linkml/core/v2_2_4/core.nwb.ophys.yaml | 10 + .../core/v2_2_4/core.nwb.retinotopy.yaml | 37 +++ .../linkml/core/v2_2_5/core.nwb.base.yaml | 16 + .../linkml/core/v2_2_5/core.nwb.behavior.yaml | 2 + .../linkml/core/v2_2_5/core.nwb.device.yaml | 2 + .../linkml/core/v2_2_5/core.nwb.ecephys.yaml | 2 + .../linkml/core/v2_2_5/core.nwb.file.yaml | 5 + .../linkml/core/v2_2_5/core.nwb.icephys.yaml | 36 +++ .../linkml/core/v2_2_5/core.nwb.image.yaml | 2 + .../linkml/core/v2_2_5/core.nwb.misc.yaml | 5 + .../linkml/core/v2_2_5/core.nwb.ophys.yaml | 10 + .../core/v2_2_5/core.nwb.retinotopy.yaml | 37 +++ .../linkml/core/v2_3_0/core.nwb.base.yaml | 17 + .../linkml/core/v2_3_0/core.nwb.behavior.yaml | 2 + .../linkml/core/v2_3_0/core.nwb.device.yaml | 2 + .../linkml/core/v2_3_0/core.nwb.ecephys.yaml | 3 + .../linkml/core/v2_3_0/core.nwb.file.yaml | 5 + .../linkml/core/v2_3_0/core.nwb.icephys.yaml | 39 +++ .../linkml/core/v2_3_0/core.nwb.image.yaml | 2 + .../linkml/core/v2_3_0/core.nwb.misc.yaml | 5 + .../linkml/core/v2_3_0/core.nwb.ophys.yaml | 10 + .../core/v2_3_0/core.nwb.retinotopy.yaml | 37 +++ .../linkml/core/v2_4_0/core.nwb.base.yaml | 17 + .../linkml/core/v2_4_0/core.nwb.behavior.yaml | 2 + .../linkml/core/v2_4_0/core.nwb.device.yaml | 2 + .../linkml/core/v2_4_0/core.nwb.ecephys.yaml | 3 + .../linkml/core/v2_4_0/core.nwb.file.yaml | 5 + .../linkml/core/v2_4_0/core.nwb.icephys.yaml | 59 ++++ .../linkml/core/v2_4_0/core.nwb.image.yaml | 2 + .../linkml/core/v2_4_0/core.nwb.misc.yaml | 5 + .../linkml/core/v2_4_0/core.nwb.ophys.yaml | 10 + .../core/v2_4_0/core.nwb.retinotopy.yaml | 37 +++ .../linkml/core/v2_5_0/core.nwb.base.yaml | 18 ++ .../linkml/core/v2_5_0/core.nwb.behavior.yaml | 2 + .../linkml/core/v2_5_0/core.nwb.device.yaml | 2 + .../linkml/core/v2_5_0/core.nwb.ecephys.yaml | 3 + .../linkml/core/v2_5_0/core.nwb.file.yaml | 5 + .../linkml/core/v2_5_0/core.nwb.icephys.yaml | 59 ++++ .../linkml/core/v2_5_0/core.nwb.image.yaml | 2 + .../linkml/core/v2_5_0/core.nwb.misc.yaml | 5 + .../linkml/core/v2_5_0/core.nwb.ophys.yaml | 10 + .../core/v2_5_0/core.nwb.retinotopy.yaml | 37 +++ .../core/v2_6_0_alpha/core.nwb.base.yaml | 18 ++ .../core/v2_6_0_alpha/core.nwb.behavior.yaml | 2 + .../core/v2_6_0_alpha/core.nwb.device.yaml | 2 + .../core/v2_6_0_alpha/core.nwb.ecephys.yaml | 3 + .../core/v2_6_0_alpha/core.nwb.file.yaml | 7 + .../core/v2_6_0_alpha/core.nwb.icephys.yaml | 59 ++++ .../core/v2_6_0_alpha/core.nwb.image.yaml | 2 + .../core/v2_6_0_alpha/core.nwb.misc.yaml | 5 + .../core/v2_6_0_alpha/core.nwb.ophys.yaml | 16 + .../v2_6_0_alpha/core.nwb.retinotopy.yaml | 37 +++ .../linkml/core/v2_7_0/core.nwb.base.yaml | 18 ++ .../linkml/core/v2_7_0/core.nwb.behavior.yaml | 2 + .../linkml/core/v2_7_0/core.nwb.device.yaml | 2 + .../linkml/core/v2_7_0/core.nwb.ecephys.yaml | 3 + .../linkml/core/v2_7_0/core.nwb.file.yaml | 7 + .../linkml/core/v2_7_0/core.nwb.icephys.yaml | 59 ++++ .../linkml/core/v2_7_0/core.nwb.image.yaml | 2 + .../linkml/core/v2_7_0/core.nwb.misc.yaml | 5 + .../linkml/core/v2_7_0/core.nwb.ophys.yaml | 16 + .../core/v2_7_0/core.nwb.retinotopy.yaml | 37 +++ .../v1_1_0/hdmf-common.sparse.yaml | 6 + .../hdmf_common/v1_1_0/hdmf-common.table.yaml | 8 + .../v1_1_2/hdmf-common.sparse.yaml | 6 + .../hdmf_common/v1_1_2/hdmf-common.table.yaml | 8 + .../v1_1_3/hdmf-common.sparse.yaml | 6 + .../hdmf_common/v1_1_3/hdmf-common.table.yaml | 8 + .../v1_5_0/hdmf-common.sparse.yaml | 2 + .../hdmf_common/v1_5_0/hdmf-common.table.yaml | 7 + .../v1_8_0/hdmf-common.sparse.yaml | 2 + .../hdmf_common/v1_8_0/hdmf-common.table.yaml | 7 + .../hdmf-experimental.experimental.yaml | 1 + .../hdmf-experimental.experimental.yaml | 1 + 234 files changed, 4772 insertions(+), 2222 deletions(-) diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_base.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_base.py index 7557e3c..99b5906 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_base.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_base.py @@ -130,10 +130,15 @@ class TimeSeries(NWBDataInterface): ) name: str = Field(...) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) data: TimeSeriesData = Field( ..., @@ -178,15 +183,17 @@ class TimeSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) conversion: Optional[float] = Field( - None, + 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( - None, + -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( - None, + 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[ @@ -212,9 +219,13 @@ class TimeSeriesStartingTime(ConfiguredBaseModel): "linkml_meta": {"equals_string": "starting_time", "ifabsent": "string(starting_time)"} }, ) - rate: Optional[float] = Field(None, description="""Sampling rate, in Hz.""") - unit: Optional[str] = Field( - None, description="""Unit of measurement for time, which is fixed to 'seconds'.""" + rate: float = Field(..., description="""Sampling rate, in Hz.""") + unit: Literal["seconds"] = Field( + "seconds", + description="""Unit of measurement for time, which is fixed to 'seconds'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "seconds", "ifabsent": "string(seconds)"} + }, ) value: float = Field(...) @@ -260,9 +271,7 @@ class Images(NWBDataInterface): ) name: str = Field("Images", json_schema_extra={"linkml_meta": {"ifabsent": "string(Images)"}}) - description: Optional[str] = Field( - None, 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.""") diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_behavior.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_behavior.py index 8d5d808..addd1ff 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_behavior.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_behavior.py @@ -84,10 +84,15 @@ class SpatialSeries(TimeSeries): reference_frame: Optional[str] = Field( None, description="""Description defining what exactly 'straight-ahead' means.""" ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -128,8 +133,9 @@ class SpatialSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) unit: Optional[str] = Field( - None, + "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'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[ Union[ diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_ecephys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_ecephys.py index 34f77fd..3e3205f 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_ecephys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_ecephys.py @@ -130,10 +130,15 @@ class ElectricalSeries(TimeSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -198,10 +203,15 @@ class SpikeEventSeries(ElectricalSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -369,9 +379,9 @@ class ElectrodeGroup(NWBContainer): ) name: str = Field(...) - description: Optional[str] = Field(None, description="""Description of this electrode group.""") - location: Optional[str] = Field( - None, + description: str = Field(..., description="""Description of this electrode group.""") + location: str = Field( + ..., description="""Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible.""", ) position: Optional[ElectrodeGroupPosition] = Field( diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_epoch.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_epoch.py index 8627b8a..d7ec41b 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_epoch.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_epoch.py @@ -150,13 +150,11 @@ class TimeIntervals(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -194,9 +192,7 @@ class TimeIntervalsTimeseries(VectorData): timeseries: Optional[TimeSeries] = Field( None, description="""the TimeSeries that this index applies to.""" ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") # Model rebuild diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_file.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_file.py index 15fdadc..f0e65b0 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_file.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_file.py @@ -98,9 +98,10 @@ class NWBFile(NWBContainer): "root", json_schema_extra={"linkml_meta": {"equals_string": "root", "ifabsent": "string(root)"}}, ) - nwb_version: Optional[str] = Field( - None, + nwb_version: Literal["2.1.0"] = Field( + "2.1.0", description="""File version string. Use semantic versioning, e.g. 1.2.1. This will be the name of the format with trailing major, minor and patch numbers.""", + json_schema_extra={"linkml_meta": {"equals_string": "2.1.0", "ifabsent": "string(2.1.0)"}}, ) file_create_date: NDArray[Shape["* num_modifications"], datetime] = Field( ..., @@ -305,7 +306,7 @@ class GeneralSourceScript(ConfiguredBaseModel): "linkml_meta": {"equals_string": "source_script", "ifabsent": "string(source_script)"} }, ) - file_name: Optional[str] = Field(None, description="""Name of script file.""") + file_name: str = Field(..., description="""Name of script file.""") value: str = Field(...) @@ -486,13 +487,11 @@ class ExtracellularEphysElectrodes(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_icephys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_icephys.py index 1242dfc..8d42b4d 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_icephys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_icephys.py @@ -107,8 +107,8 @@ class PatchClampSeries(TimeSeries): ) name: str = Field(...) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -127,10 +127,15 @@ class PatchClampSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -170,8 +175,8 @@ class PatchClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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"], float]] = Field( @@ -195,8 +200,8 @@ class CurrentClampSeries(PatchClampSeries): capacitance_compensation: Optional[float] = Field( None, description="""Capacitance compensation, in farads.""" ) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -214,10 +219,15 @@ class CurrentClampSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -257,9 +267,10 @@ class CurrentClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: Literal["volts"] = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}}, ) value: Any = Field(...) @@ -280,8 +291,8 @@ class IZeroClampSeries(CurrentClampSeries): ..., description="""Capacitance compensation, in farads, fixed to 0.0.""" ) data: CurrentClampSeriesData = Field(..., description="""Recorded voltage.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -299,10 +310,15 @@ class IZeroClampSeries(CurrentClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -342,8 +358,8 @@ class CurrentClampStimulusSeries(PatchClampSeries): name: str = Field(...) data: CurrentClampStimulusSeriesData = Field(..., description="""Stimulus current applied.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -361,10 +377,15 @@ class CurrentClampStimulusSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -404,9 +425,12 @@ class CurrentClampStimulusSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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(...) @@ -443,8 +467,8 @@ class VoltageClampSeries(PatchClampSeries): whole_cell_series_resistance_comp: Optional[VoltageClampSeriesWholeCellSeriesResistanceComp] = ( Field(None, description="""Whole cell series resistance compensation, in ohms.""") ) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -462,10 +486,15 @@ class VoltageClampSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -505,9 +534,12 @@ class VoltageClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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(...) @@ -528,9 +560,12 @@ class VoltageClampSeriesCapacitanceFast(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for capacitance_fast, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -551,9 +586,12 @@ class VoltageClampSeriesCapacitanceSlow(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for capacitance_fast, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -574,9 +612,10 @@ class VoltageClampSeriesResistanceCompBandwidth(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["hertz"] = Field( + "hertz", description="""Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'.""", + json_schema_extra={"linkml_meta": {"equals_string": "hertz", "ifabsent": "string(hertz)"}}, ) value: float = Field(...) @@ -597,9 +636,12 @@ class VoltageClampSeriesResistanceCompCorrection(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["percent"] = Field( + "percent", description="""Unit of measurement for resistance_comp_correction, which is fixed to 'percent'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "percent", "ifabsent": "string(percent)"} + }, ) value: float = Field(...) @@ -620,9 +662,12 @@ class VoltageClampSeriesResistanceCompPrediction(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["percent"] = Field( + "percent", description="""Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "percent", "ifabsent": "string(percent)"} + }, ) value: float = Field(...) @@ -643,9 +688,12 @@ class VoltageClampSeriesWholeCellCapacitanceComp(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -666,9 +714,10 @@ class VoltageClampSeriesWholeCellSeriesResistanceComp(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["ohms"] = Field( + "ohms", description="""Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.""", + json_schema_extra={"linkml_meta": {"equals_string": "ohms", "ifabsent": "string(ohms)"}}, ) value: float = Field(...) @@ -684,8 +733,8 @@ class VoltageClampStimulusSeries(PatchClampSeries): name: str = Field(...) data: VoltageClampStimulusSeriesData = Field(..., description="""Stimulus voltage applied.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -703,10 +752,15 @@ class VoltageClampStimulusSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -746,9 +800,10 @@ class VoltageClampStimulusSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: Literal["volts"] = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}}, ) value: Any = Field(...) @@ -824,13 +879,11 @@ class SweepTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_image.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_image.py index 8f16e8e..77e40f9 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_image.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_image.py @@ -159,10 +159,15 @@ class ImageSeries(TimeSeries): None, description="""Format of image. If this is 'external', then the attribute 'external_file' contains the path information to the image files. If this is 'raw', then the raw (single-channel) binary data is stored in the 'data' dataset. If this attribute is not present, then the default format='raw' case is assumed.""", ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -204,8 +209,8 @@ class ImageSeriesExternalFile(ConfiguredBaseModel): "linkml_meta": {"equals_string": "external_file", "ifabsent": "string(external_file)"} }, ) - starting_frame: Optional[int] = Field( - None, + starting_frame: List[int] = Field( + ..., description="""Each external image may contain one or more consecutive frames of the full ImageSeries. This attribute serves as an index to indicate which frames each file contains, to faciliate random access. The 'starting_frame' attribute, hence, contains a list of frame numbers within the full ImageSeries of the first frame of each file listed in the parent 'external_file' dataset. Zero-based indexing is used (hence, the first element will always be zero). For example, if the 'external_file' dataset has three paths to files and the first file has 5 frames, the second file has 10 frames, and the third file has 20 frames, then this attribute will have values [0, 5, 15]. If there is a single external file that holds all of the frames of the ImageSeries (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0].""", ) value: Optional[NDArray[Shape["* num_files"], str]] = Field( @@ -251,10 +256,15 @@ class ImageMaskSeries(ImageSeries): None, description="""Format of image. If this is 'external', then the attribute 'external_file' contains the path information to the image files. If this is 'raw', then the raw (single-channel) binary data is stored in the 'data' dataset. If this attribute is not present, then the default format='raw' case is assumed.""", ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -324,10 +334,15 @@ class OpticalSeries(ImageSeries): None, description="""Format of image. If this is 'external', then the attribute 'external_file' contains the path information to the image files. If this is 'raw', then the raw (single-channel) binary data is stored in the 'data' dataset. If this attribute is not present, then the default format='raw' case is assumed.""", ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -380,10 +395,15 @@ class IndexSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_misc.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_misc.py index 9c79866..3a9affd 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_misc.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_misc.py @@ -120,10 +120,15 @@ class AbstractFeatureSeries(TimeSeries): description="""Description of the features represented in TimeSeries::data.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_features"}]}}}, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -164,8 +169,9 @@ class AbstractFeatureSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) unit: Optional[str] = Field( - None, + "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'\".""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(see 'feature_units')"}}, ) value: Optional[ Union[ @@ -190,10 +196,15 @@ class AnnotationSeries(TimeSeries): description="""Annotations made during an experiment.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -237,10 +248,15 @@ class IntervalSeries(TimeSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -296,10 +312,15 @@ class DecompositionSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -339,9 +360,10 @@ class DecompositionSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: str = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no unit)"}}, ) value: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float]] = Field( None, @@ -403,13 +425,11 @@ class DecompositionSeriesBands(DynamicTable): description="""The standard deviation of Gaussian filters, in Hz.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_bands"}]}}}, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -513,13 +533,11 @@ class Units(DynamicTable): NDArray[Shape["* num_units, * num_samples, * num_electrodes"], float], ] ] = Field(None, description="""Spike waveform standard deviation for each spike unit.""") - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -550,9 +568,7 @@ class UnitsSpikeTimes(VectorData): None, description="""The smallest possible difference between two spike times. Usually 1 divided by the acquisition sampling rate from which spike times were extracted, but could be larger if the acquisition time series was downsampled or smaller if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be between samples.""", ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") # Model rebuild diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_ogen.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_ogen.py index f75e675..4a46e2c 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_ogen.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_ogen.py @@ -91,10 +91,15 @@ class OptogeneticSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_ophys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_ophys.py index 062517f..8a134f9 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_ophys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_ophys.py @@ -146,10 +146,15 @@ class TwoPhotonSeries(ImageSeries): None, description="""Format of image. If this is 'external', then the attribute 'external_file' contains the path information to the image files. If this is 'raw', then the raw (single-channel) binary data is stored in the 'data' dataset. If this attribute is not present, then the default format='raw' case is assumed.""", ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -203,10 +208,15 @@ class RoiResponseSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -342,12 +352,14 @@ class ImagingPlaneManifold(ConfiguredBaseModel): }, ) conversion: Optional[float] = Field( - None, + 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 pixels from x = -500 to 499, y = -500 to 499 that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get from raw data acquisition pixel units to meters is 2/1000.""", + json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}}, ) unit: Optional[str] = Field( - None, + "meters", description="""Base unit of measurement for working with the data. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[ Union[ @@ -370,8 +382,10 @@ class ImagingPlaneOriginCoords(ConfiguredBaseModel): "linkml_meta": {"equals_string": "origin_coords", "ifabsent": "string(origin_coords)"} }, ) - unit: Optional[str] = Field( - None, description="""Measurement units for origin_coords. The default value is 'meters'.""" + unit: str = Field( + "meters", + description="""Measurement units for origin_coords. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[NDArray[Shape["2 x_y, 3 x_y_z"], float]] = Field( None, @@ -401,8 +415,10 @@ class ImagingPlaneGridSpacing(ConfiguredBaseModel): "linkml_meta": {"equals_string": "grid_spacing", "ifabsent": "string(grid_spacing)"} }, ) - unit: Optional[str] = Field( - None, description="""Measurement units for grid_spacing. The default value is 'meters'.""" + unit: str = Field( + "meters", + description="""Measurement units for grid_spacing. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[NDArray[Shape["2 x_y, 3 x_y_z"], float]] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_retinotopy.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_retinotopy.py index dcb153d..5cbf6b0 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_retinotopy.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_0/core_nwb_retinotopy.py @@ -96,11 +96,11 @@ class RetinotopyMap(NWBData): ) name: str = Field(...) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -119,20 +119,18 @@ class AxisMap(RetinotopyMap): ) name: str = Field(...) - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ "linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}, {"alias": "num_cols"}]}} }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") class RetinotopyImage(GrayscaleImage): @@ -145,18 +143,16 @@ class RetinotopyImage(GrayscaleImage): ) name: str = Field(...) - bits_per_pixel: Optional[int] = Field( - None, + bits_per_pixel: int = Field( + ..., description="""Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value.""", ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - format: Optional[str] = Field( - None, description="""Format of image. Right now only 'raw' is supported.""" - ) + 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.""") resolution: Optional[float] = Field( None, description="""Pixel resolution of the image, in pixels per centimeter.""" ) @@ -286,19 +282,17 @@ class ImagingRetinotopyFocalDepthImage(RetinotopyImage): } }, ) - focal_depth: Optional[float] = Field(None, description="""Focal depth offset, in meters.""") - bits_per_pixel: Optional[int] = Field( - None, + focal_depth: float = Field(..., description="""Focal depth offset, in meters.""") + bits_per_pixel: int = Field( + ..., description="""Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value.""", ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - format: Optional[str] = Field( - None, description="""Format of image. Right now only 'raw' is supported.""" - ) + 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.""") resolution: Optional[float] = Field( None, description="""Pixel resolution of the image, in pixels per centimeter.""" ) diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_base.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_base.py index 228d72f..c8c1162 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_base.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_base.py @@ -130,10 +130,15 @@ class TimeSeries(NWBDataInterface): ) name: str = Field(...) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) data: TimeSeriesData = Field( ..., @@ -178,15 +183,17 @@ class TimeSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) conversion: Optional[float] = Field( - None, + 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( - None, + -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( - None, + 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[ @@ -212,9 +219,13 @@ class TimeSeriesStartingTime(ConfiguredBaseModel): "linkml_meta": {"equals_string": "starting_time", "ifabsent": "string(starting_time)"} }, ) - rate: Optional[float] = Field(None, description="""Sampling rate, in Hz.""") - unit: Optional[str] = Field( - None, description="""Unit of measurement for time, which is fixed to 'seconds'.""" + rate: float = Field(..., description="""Sampling rate, in Hz.""") + unit: Literal["seconds"] = Field( + "seconds", + description="""Unit of measurement for time, which is fixed to 'seconds'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "seconds", "ifabsent": "string(seconds)"} + }, ) value: float = Field(...) @@ -260,9 +271,7 @@ class Images(NWBDataInterface): ) name: str = Field("Images", json_schema_extra={"linkml_meta": {"ifabsent": "string(Images)"}}) - description: Optional[str] = Field( - None, 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.""") diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_behavior.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_behavior.py index 25d55da..45af85e 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_behavior.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_behavior.py @@ -84,10 +84,15 @@ class SpatialSeries(TimeSeries): reference_frame: Optional[str] = Field( None, description="""Description defining what exactly 'straight-ahead' means.""" ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -128,8 +133,9 @@ class SpatialSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) unit: Optional[str] = Field( - None, + "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'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[ Union[ diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_ecephys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_ecephys.py index eaee082..d337bbe 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_ecephys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_ecephys.py @@ -130,10 +130,15 @@ class ElectricalSeries(TimeSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -198,10 +203,15 @@ class SpikeEventSeries(ElectricalSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -369,9 +379,9 @@ class ElectrodeGroup(NWBContainer): ) name: str = Field(...) - description: Optional[str] = Field(None, description="""Description of this electrode group.""") - location: Optional[str] = Field( - None, + description: str = Field(..., description="""Description of this electrode group.""") + location: str = Field( + ..., description="""Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible.""", ) position: Optional[ElectrodeGroupPosition] = Field( diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_epoch.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_epoch.py index b80640c..cfd4e53 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_epoch.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_epoch.py @@ -150,13 +150,11 @@ class TimeIntervals(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -194,9 +192,7 @@ class TimeIntervalsTimeseries(VectorData): timeseries: Optional[TimeSeries] = Field( None, description="""the TimeSeries that this index applies to.""" ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") # Model rebuild diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_file.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_file.py index 092eaf4..a17f8e1 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_file.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_file.py @@ -98,9 +98,10 @@ class NWBFile(NWBContainer): "root", json_schema_extra={"linkml_meta": {"equals_string": "root", "ifabsent": "string(root)"}}, ) - nwb_version: Optional[str] = Field( - None, + nwb_version: Literal["2.2.1"] = Field( + "2.2.1", description="""File version string. Use semantic versioning, e.g. 1.2.1. This will be the name of the format with trailing major, minor and patch numbers.""", + json_schema_extra={"linkml_meta": {"equals_string": "2.2.1", "ifabsent": "string(2.2.1)"}}, ) file_create_date: NDArray[Shape["* num_modifications"], datetime] = Field( ..., @@ -305,7 +306,7 @@ class GeneralSourceScript(ConfiguredBaseModel): "linkml_meta": {"equals_string": "source_script", "ifabsent": "string(source_script)"} }, ) - file_name: Optional[str] = Field(None, description="""Name of script file.""") + file_name: str = Field(..., description="""Name of script file.""") value: str = Field(...) @@ -486,13 +487,11 @@ class ExtracellularEphysElectrodes(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_icephys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_icephys.py index 0109b14..5be0500 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_icephys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_icephys.py @@ -107,8 +107,8 @@ class PatchClampSeries(TimeSeries): ) name: str = Field(...) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -127,10 +127,15 @@ class PatchClampSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -170,8 +175,8 @@ class PatchClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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"], float]] = Field( @@ -195,8 +200,8 @@ class CurrentClampSeries(PatchClampSeries): capacitance_compensation: Optional[float] = Field( None, description="""Capacitance compensation, in farads.""" ) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -214,10 +219,15 @@ class CurrentClampSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -257,9 +267,10 @@ class CurrentClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: Literal["volts"] = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}}, ) value: Any = Field(...) @@ -280,8 +291,8 @@ class IZeroClampSeries(CurrentClampSeries): ..., description="""Capacitance compensation, in farads, fixed to 0.0.""" ) data: CurrentClampSeriesData = Field(..., description="""Recorded voltage.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -299,10 +310,15 @@ class IZeroClampSeries(CurrentClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -342,8 +358,8 @@ class CurrentClampStimulusSeries(PatchClampSeries): name: str = Field(...) data: CurrentClampStimulusSeriesData = Field(..., description="""Stimulus current applied.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -361,10 +377,15 @@ class CurrentClampStimulusSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -404,9 +425,12 @@ class CurrentClampStimulusSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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(...) @@ -443,8 +467,8 @@ class VoltageClampSeries(PatchClampSeries): whole_cell_series_resistance_comp: Optional[VoltageClampSeriesWholeCellSeriesResistanceComp] = ( Field(None, description="""Whole cell series resistance compensation, in ohms.""") ) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -462,10 +486,15 @@ class VoltageClampSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -505,9 +534,12 @@ class VoltageClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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(...) @@ -528,9 +560,12 @@ class VoltageClampSeriesCapacitanceFast(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for capacitance_fast, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -551,9 +586,12 @@ class VoltageClampSeriesCapacitanceSlow(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for capacitance_fast, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -574,9 +612,10 @@ class VoltageClampSeriesResistanceCompBandwidth(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["hertz"] = Field( + "hertz", description="""Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'.""", + json_schema_extra={"linkml_meta": {"equals_string": "hertz", "ifabsent": "string(hertz)"}}, ) value: float = Field(...) @@ -597,9 +636,12 @@ class VoltageClampSeriesResistanceCompCorrection(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["percent"] = Field( + "percent", description="""Unit of measurement for resistance_comp_correction, which is fixed to 'percent'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "percent", "ifabsent": "string(percent)"} + }, ) value: float = Field(...) @@ -620,9 +662,12 @@ class VoltageClampSeriesResistanceCompPrediction(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["percent"] = Field( + "percent", description="""Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "percent", "ifabsent": "string(percent)"} + }, ) value: float = Field(...) @@ -643,9 +688,12 @@ class VoltageClampSeriesWholeCellCapacitanceComp(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -666,9 +714,10 @@ class VoltageClampSeriesWholeCellSeriesResistanceComp(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["ohms"] = Field( + "ohms", description="""Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.""", + json_schema_extra={"linkml_meta": {"equals_string": "ohms", "ifabsent": "string(ohms)"}}, ) value: float = Field(...) @@ -684,8 +733,8 @@ class VoltageClampStimulusSeries(PatchClampSeries): name: str = Field(...) data: VoltageClampStimulusSeriesData = Field(..., description="""Stimulus voltage applied.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -703,10 +752,15 @@ class VoltageClampStimulusSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -746,9 +800,10 @@ class VoltageClampStimulusSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: Literal["volts"] = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}}, ) value: Any = Field(...) @@ -824,13 +879,11 @@ class SweepTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_image.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_image.py index e831ea1..97e4aa8 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_image.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_image.py @@ -159,10 +159,15 @@ class ImageSeries(TimeSeries): None, description="""Format of image. If this is 'external', then the attribute 'external_file' contains the path information to the image files. If this is 'raw', then the raw (single-channel) binary data is stored in the 'data' dataset. If this attribute is not present, then the default format='raw' case is assumed.""", ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -204,8 +209,8 @@ class ImageSeriesExternalFile(ConfiguredBaseModel): "linkml_meta": {"equals_string": "external_file", "ifabsent": "string(external_file)"} }, ) - starting_frame: Optional[int] = Field( - None, + starting_frame: List[int] = Field( + ..., description="""Each external image may contain one or more consecutive frames of the full ImageSeries. This attribute serves as an index to indicate which frames each file contains, to faciliate random access. The 'starting_frame' attribute, hence, contains a list of frame numbers within the full ImageSeries of the first frame of each file listed in the parent 'external_file' dataset. Zero-based indexing is used (hence, the first element will always be zero). For example, if the 'external_file' dataset has three paths to files and the first file has 5 frames, the second file has 10 frames, and the third file has 20 frames, then this attribute will have values [0, 5, 15]. If there is a single external file that holds all of the frames of the ImageSeries (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0].""", ) value: Optional[NDArray[Shape["* num_files"], str]] = Field( @@ -251,10 +256,15 @@ class ImageMaskSeries(ImageSeries): None, description="""Format of image. If this is 'external', then the attribute 'external_file' contains the path information to the image files. If this is 'raw', then the raw (single-channel) binary data is stored in the 'data' dataset. If this attribute is not present, then the default format='raw' case is assumed.""", ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -324,10 +334,15 @@ class OpticalSeries(ImageSeries): None, description="""Format of image. If this is 'external', then the attribute 'external_file' contains the path information to the image files. If this is 'raw', then the raw (single-channel) binary data is stored in the 'data' dataset. If this attribute is not present, then the default format='raw' case is assumed.""", ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -380,10 +395,15 @@ class IndexSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_misc.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_misc.py index 19c418d..9f114c6 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_misc.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_misc.py @@ -120,10 +120,15 @@ class AbstractFeatureSeries(TimeSeries): description="""Description of the features represented in TimeSeries::data.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_features"}]}}}, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -164,8 +169,9 @@ class AbstractFeatureSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) unit: Optional[str] = Field( - None, + "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'\".""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(see 'feature_units')"}}, ) value: Optional[ Union[ @@ -190,10 +196,15 @@ class AnnotationSeries(TimeSeries): description="""Annotations made during an experiment.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -237,10 +248,15 @@ class IntervalSeries(TimeSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -296,10 +312,15 @@ class DecompositionSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -339,9 +360,10 @@ class DecompositionSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: str = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no unit)"}}, ) value: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float]] = Field( None, @@ -403,13 +425,11 @@ class DecompositionSeriesBands(DynamicTable): description="""The standard deviation of Gaussian filters, in Hz.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_bands"}]}}}, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -513,13 +533,11 @@ class Units(DynamicTable): NDArray[Shape["* num_units, * num_samples, * num_electrodes"], float], ] ] = Field(None, description="""Spike waveform standard deviation for each spike unit.""") - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -550,9 +568,7 @@ class UnitsSpikeTimes(VectorData): None, description="""The smallest possible difference between two spike times. Usually 1 divided by the acquisition sampling rate from which spike times were extracted, but could be larger if the acquisition time series was downsampled or smaller if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be between samples.""", ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") # Model rebuild diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_ogen.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_ogen.py index 37ff5c3..e94dead 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_ogen.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_ogen.py @@ -91,10 +91,15 @@ class OptogeneticSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_ophys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_ophys.py index ba8d78a..6ad59b8 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_ophys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_ophys.py @@ -146,10 +146,15 @@ class TwoPhotonSeries(ImageSeries): None, description="""Format of image. If this is 'external', then the attribute 'external_file' contains the path information to the image files. If this is 'raw', then the raw (single-channel) binary data is stored in the 'data' dataset. If this attribute is not present, then the default format='raw' case is assumed.""", ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -203,10 +208,15 @@ class RoiResponseSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -342,12 +352,14 @@ class ImagingPlaneManifold(ConfiguredBaseModel): }, ) conversion: Optional[float] = Field( - None, + 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 pixels from x = -500 to 499, y = -500 to 499 that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get from raw data acquisition pixel units to meters is 2/1000.""", + json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}}, ) unit: Optional[str] = Field( - None, + "meters", description="""Base unit of measurement for working with the data. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[ Union[ @@ -370,8 +382,10 @@ class ImagingPlaneOriginCoords(ConfiguredBaseModel): "linkml_meta": {"equals_string": "origin_coords", "ifabsent": "string(origin_coords)"} }, ) - unit: Optional[str] = Field( - None, description="""Measurement units for origin_coords. The default value is 'meters'.""" + unit: str = Field( + "meters", + description="""Measurement units for origin_coords. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[NDArray[Shape["2 x_y, 3 x_y_z"], float]] = Field( None, @@ -401,8 +415,10 @@ class ImagingPlaneGridSpacing(ConfiguredBaseModel): "linkml_meta": {"equals_string": "grid_spacing", "ifabsent": "string(grid_spacing)"} }, ) - unit: Optional[str] = Field( - None, description="""Measurement units for grid_spacing. The default value is 'meters'.""" + unit: str = Field( + "meters", + description="""Measurement units for grid_spacing. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[NDArray[Shape["2 x_y, 3 x_y_z"], float]] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_retinotopy.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_retinotopy.py index 98f0ede..2c68f1f 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_retinotopy.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_1/core_nwb_retinotopy.py @@ -96,11 +96,11 @@ class RetinotopyMap(NWBData): ) name: str = Field(...) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -119,20 +119,18 @@ class AxisMap(RetinotopyMap): ) name: str = Field(...) - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ "linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}, {"alias": "num_cols"}]}} }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") class RetinotopyImage(GrayscaleImage): @@ -145,18 +143,16 @@ class RetinotopyImage(GrayscaleImage): ) name: str = Field(...) - bits_per_pixel: Optional[int] = Field( - None, + bits_per_pixel: int = Field( + ..., description="""Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value.""", ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - format: Optional[str] = Field( - None, description="""Format of image. Right now only 'raw' is supported.""" - ) + 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.""") resolution: Optional[float] = Field( None, description="""Pixel resolution of the image, in pixels per centimeter.""" ) @@ -286,19 +282,17 @@ class ImagingRetinotopyFocalDepthImage(RetinotopyImage): } }, ) - focal_depth: Optional[float] = Field(None, description="""Focal depth offset, in meters.""") - bits_per_pixel: Optional[int] = Field( - None, + focal_depth: float = Field(..., description="""Focal depth offset, in meters.""") + bits_per_pixel: int = Field( + ..., description="""Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value.""", ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - format: Optional[str] = Field( - None, description="""Format of image. Right now only 'raw' is supported.""" - ) + 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.""") resolution: Optional[float] = Field( None, description="""Pixel resolution of the image, in pixels per centimeter.""" ) diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_base.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_base.py index 14eaf16..8dbf06a 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_base.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_base.py @@ -130,10 +130,15 @@ class TimeSeries(NWBDataInterface): ) name: str = Field(...) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) data: TimeSeriesData = Field( ..., @@ -178,15 +183,17 @@ class TimeSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) conversion: Optional[float] = Field( - None, + 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( - None, + -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( - None, + 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[ @@ -212,9 +219,13 @@ class TimeSeriesStartingTime(ConfiguredBaseModel): "linkml_meta": {"equals_string": "starting_time", "ifabsent": "string(starting_time)"} }, ) - rate: Optional[float] = Field(None, description="""Sampling rate, in Hz.""") - unit: Optional[str] = Field( - None, description="""Unit of measurement for time, which is fixed to 'seconds'.""" + rate: float = Field(..., description="""Sampling rate, in Hz.""") + unit: Literal["seconds"] = Field( + "seconds", + description="""Unit of measurement for time, which is fixed to 'seconds'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "seconds", "ifabsent": "string(seconds)"} + }, ) value: float = Field(...) @@ -260,9 +271,7 @@ class Images(NWBDataInterface): ) name: str = Field("Images", json_schema_extra={"linkml_meta": {"ifabsent": "string(Images)"}}) - description: Optional[str] = Field( - None, 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.""") diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_behavior.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_behavior.py index d19da8f..9984cf5 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_behavior.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_behavior.py @@ -84,10 +84,15 @@ class SpatialSeries(TimeSeries): reference_frame: Optional[str] = Field( None, description="""Description defining what exactly 'straight-ahead' means.""" ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -128,8 +133,9 @@ class SpatialSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) unit: Optional[str] = Field( - None, + "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'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[ Union[ diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_ecephys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_ecephys.py index 06bad97..fa2e7d2 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_ecephys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_ecephys.py @@ -130,10 +130,15 @@ class ElectricalSeries(TimeSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -198,10 +203,15 @@ class SpikeEventSeries(ElectricalSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -369,9 +379,9 @@ class ElectrodeGroup(NWBContainer): ) name: str = Field(...) - description: Optional[str] = Field(None, description="""Description of this electrode group.""") - location: Optional[str] = Field( - None, + description: str = Field(..., description="""Description of this electrode group.""") + location: str = Field( + ..., description="""Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible.""", ) position: Optional[ElectrodeGroupPosition] = Field( diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_epoch.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_epoch.py index 11b17cf..0464db5 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_epoch.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_epoch.py @@ -150,13 +150,11 @@ class TimeIntervals(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -194,9 +192,7 @@ class TimeIntervalsTimeseries(VectorData): timeseries: Optional[TimeSeries] = Field( None, description="""the TimeSeries that this index applies to.""" ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_file.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_file.py index 128b7a4..ef18f50 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_file.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_file.py @@ -98,9 +98,10 @@ class NWBFile(NWBContainer): "root", json_schema_extra={"linkml_meta": {"equals_string": "root", "ifabsent": "string(root)"}}, ) - nwb_version: Optional[str] = Field( - None, + nwb_version: Literal["2.2.2"] = Field( + "2.2.2", description="""File version string. Use semantic versioning, e.g. 1.2.1. This will be the name of the format with trailing major, minor and patch numbers.""", + json_schema_extra={"linkml_meta": {"equals_string": "2.2.2", "ifabsent": "string(2.2.2)"}}, ) file_create_date: NDArray[Shape["* num_modifications"], datetime] = Field( ..., @@ -305,7 +306,7 @@ class GeneralSourceScript(ConfiguredBaseModel): "linkml_meta": {"equals_string": "source_script", "ifabsent": "string(source_script)"} }, ) - file_name: Optional[str] = Field(None, description="""Name of script file.""") + file_name: str = Field(..., description="""Name of script file.""") value: str = Field(...) @@ -486,13 +487,11 @@ class ExtracellularEphysElectrodes(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_icephys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_icephys.py index d48fcbd..29a500f 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_icephys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_icephys.py @@ -107,8 +107,8 @@ class PatchClampSeries(TimeSeries): ) name: str = Field(...) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -127,10 +127,15 @@ class PatchClampSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -170,8 +175,8 @@ class PatchClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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"], float]] = Field( @@ -195,8 +200,8 @@ class CurrentClampSeries(PatchClampSeries): capacitance_compensation: Optional[float] = Field( None, description="""Capacitance compensation, in farads.""" ) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -214,10 +219,15 @@ class CurrentClampSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -257,9 +267,10 @@ class CurrentClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: Literal["volts"] = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}}, ) value: Any = Field(...) @@ -280,8 +291,8 @@ class IZeroClampSeries(CurrentClampSeries): ..., description="""Capacitance compensation, in farads, fixed to 0.0.""" ) data: CurrentClampSeriesData = Field(..., description="""Recorded voltage.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -299,10 +310,15 @@ class IZeroClampSeries(CurrentClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -342,8 +358,8 @@ class CurrentClampStimulusSeries(PatchClampSeries): name: str = Field(...) data: CurrentClampStimulusSeriesData = Field(..., description="""Stimulus current applied.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -361,10 +377,15 @@ class CurrentClampStimulusSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -404,9 +425,12 @@ class CurrentClampStimulusSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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(...) @@ -443,8 +467,8 @@ class VoltageClampSeries(PatchClampSeries): whole_cell_series_resistance_comp: Optional[VoltageClampSeriesWholeCellSeriesResistanceComp] = ( Field(None, description="""Whole cell series resistance compensation, in ohms.""") ) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -462,10 +486,15 @@ class VoltageClampSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -505,9 +534,12 @@ class VoltageClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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(...) @@ -528,9 +560,12 @@ class VoltageClampSeriesCapacitanceFast(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for capacitance_fast, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -551,9 +586,12 @@ class VoltageClampSeriesCapacitanceSlow(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for capacitance_fast, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -574,9 +612,10 @@ class VoltageClampSeriesResistanceCompBandwidth(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["hertz"] = Field( + "hertz", description="""Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'.""", + json_schema_extra={"linkml_meta": {"equals_string": "hertz", "ifabsent": "string(hertz)"}}, ) value: float = Field(...) @@ -597,9 +636,12 @@ class VoltageClampSeriesResistanceCompCorrection(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["percent"] = Field( + "percent", description="""Unit of measurement for resistance_comp_correction, which is fixed to 'percent'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "percent", "ifabsent": "string(percent)"} + }, ) value: float = Field(...) @@ -620,9 +662,12 @@ class VoltageClampSeriesResistanceCompPrediction(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["percent"] = Field( + "percent", description="""Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "percent", "ifabsent": "string(percent)"} + }, ) value: float = Field(...) @@ -643,9 +688,12 @@ class VoltageClampSeriesWholeCellCapacitanceComp(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -666,9 +714,10 @@ class VoltageClampSeriesWholeCellSeriesResistanceComp(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["ohms"] = Field( + "ohms", description="""Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.""", + json_schema_extra={"linkml_meta": {"equals_string": "ohms", "ifabsent": "string(ohms)"}}, ) value: float = Field(...) @@ -684,8 +733,8 @@ class VoltageClampStimulusSeries(PatchClampSeries): name: str = Field(...) data: VoltageClampStimulusSeriesData = Field(..., description="""Stimulus voltage applied.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -703,10 +752,15 @@ class VoltageClampStimulusSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -746,9 +800,10 @@ class VoltageClampStimulusSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: Literal["volts"] = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}}, ) value: Any = Field(...) @@ -824,13 +879,11 @@ class SweepTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_image.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_image.py index b161444..2bafac7 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_image.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_image.py @@ -159,10 +159,15 @@ class ImageSeries(TimeSeries): None, description="""Format of image. If this is 'external', then the attribute 'external_file' contains the path information to the image files. If this is 'raw', then the raw (single-channel) binary data is stored in the 'data' dataset. If this attribute is not present, then the default format='raw' case is assumed.""", ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -204,8 +209,8 @@ class ImageSeriesExternalFile(ConfiguredBaseModel): "linkml_meta": {"equals_string": "external_file", "ifabsent": "string(external_file)"} }, ) - starting_frame: Optional[int] = Field( - None, + starting_frame: List[int] = Field( + ..., description="""Each external image may contain one or more consecutive frames of the full ImageSeries. This attribute serves as an index to indicate which frames each file contains, to faciliate random access. The 'starting_frame' attribute, hence, contains a list of frame numbers within the full ImageSeries of the first frame of each file listed in the parent 'external_file' dataset. Zero-based indexing is used (hence, the first element will always be zero). For example, if the 'external_file' dataset has three paths to files and the first file has 5 frames, the second file has 10 frames, and the third file has 20 frames, then this attribute will have values [0, 5, 15]. If there is a single external file that holds all of the frames of the ImageSeries (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0].""", ) value: Optional[NDArray[Shape["* num_files"], str]] = Field( @@ -251,10 +256,15 @@ class ImageMaskSeries(ImageSeries): None, description="""Format of image. If this is 'external', then the attribute 'external_file' contains the path information to the image files. If this is 'raw', then the raw (single-channel) binary data is stored in the 'data' dataset. If this attribute is not present, then the default format='raw' case is assumed.""", ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -322,10 +332,15 @@ class OpticalSeries(ImageSeries): None, description="""Format of image. If this is 'external', then the attribute 'external_file' contains the path information to the image files. If this is 'raw', then the raw (single-channel) binary data is stored in the 'data' dataset. If this attribute is not present, then the default format='raw' case is assumed.""", ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -378,10 +393,15 @@ class IndexSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_misc.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_misc.py index cfdfb58..7485685 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_misc.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_misc.py @@ -120,10 +120,15 @@ class AbstractFeatureSeries(TimeSeries): description="""Description of the features represented in TimeSeries::data.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_features"}]}}}, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -164,8 +169,9 @@ class AbstractFeatureSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) unit: Optional[str] = Field( - None, + "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'\".""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(see 'feature_units')"}}, ) value: Optional[ Union[ @@ -190,10 +196,15 @@ class AnnotationSeries(TimeSeries): description="""Annotations made during an experiment.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -237,10 +248,15 @@ class IntervalSeries(TimeSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -296,10 +312,15 @@ class DecompositionSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -339,9 +360,10 @@ class DecompositionSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: str = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no unit)"}}, ) value: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float]] = Field( None, @@ -403,13 +425,11 @@ class DecompositionSeriesBands(DynamicTable): description="""The standard deviation of Gaussian filters, in Hz.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_bands"}]}}}, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -513,13 +533,11 @@ class Units(DynamicTable): NDArray[Shape["* num_units, * num_samples, * num_electrodes"], float], ] ] = Field(None, description="""Spike waveform standard deviation for each spike unit.""") - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -550,9 +568,7 @@ class UnitsSpikeTimes(VectorData): None, description="""The smallest possible difference between two spike times. Usually 1 divided by the acquisition sampling rate from which spike times were extracted, but could be larger if the acquisition time series was downsampled or smaller if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be between samples.""", ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_ogen.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_ogen.py index 2b0d4f5..cfd0933 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_ogen.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_ogen.py @@ -91,10 +91,15 @@ class OptogeneticSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_ophys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_ophys.py index e4c1979..48ebb24 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_ophys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_ophys.py @@ -146,10 +146,15 @@ class TwoPhotonSeries(ImageSeries): None, description="""Format of image. If this is 'external', then the attribute 'external_file' contains the path information to the image files. If this is 'raw', then the raw (single-channel) binary data is stored in the 'data' dataset. If this attribute is not present, then the default format='raw' case is assumed.""", ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -203,10 +208,15 @@ class RoiResponseSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -342,12 +352,14 @@ class ImagingPlaneManifold(ConfiguredBaseModel): }, ) conversion: Optional[float] = Field( - None, + 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 pixels from x = -500 to 499, y = -500 to 499 that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get from raw data acquisition pixel units to meters is 2/1000.""", + json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}}, ) unit: Optional[str] = Field( - None, + "meters", description="""Base unit of measurement for working with the data. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[ Union[ @@ -370,8 +382,10 @@ class ImagingPlaneOriginCoords(ConfiguredBaseModel): "linkml_meta": {"equals_string": "origin_coords", "ifabsent": "string(origin_coords)"} }, ) - unit: Optional[str] = Field( - None, description="""Measurement units for origin_coords. The default value is 'meters'.""" + unit: str = Field( + "meters", + description="""Measurement units for origin_coords. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[NDArray[Shape["2 x_y, 3 x_y_z"], float]] = Field( None, @@ -401,8 +415,10 @@ class ImagingPlaneGridSpacing(ConfiguredBaseModel): "linkml_meta": {"equals_string": "grid_spacing", "ifabsent": "string(grid_spacing)"} }, ) - unit: Optional[str] = Field( - None, description="""Measurement units for grid_spacing. The default value is 'meters'.""" + unit: str = Field( + "meters", + description="""Measurement units for grid_spacing. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[NDArray[Shape["2 x_y, 3 x_y_z"], float]] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_retinotopy.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_retinotopy.py index c2d0c5f..976d7f2 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_retinotopy.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_2/core_nwb_retinotopy.py @@ -127,14 +127,12 @@ class ImagingRetinotopyAxis1PhaseMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -159,14 +157,12 @@ class ImagingRetinotopyAxis1PowerMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -191,14 +187,12 @@ class ImagingRetinotopyAxis2PhaseMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -223,14 +217,12 @@ class ImagingRetinotopyAxis2PowerMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -255,19 +247,17 @@ class ImagingRetinotopyFocalDepthImage(ConfiguredBaseModel): } }, ) - bits_per_pixel: Optional[int] = Field( - None, + bits_per_pixel: int = Field( + ..., description="""Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value.""", ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - focal_depth: Optional[float] = Field(None, description="""Focal depth offset, in meters.""") - format: Optional[str] = Field( - None, description="""Format of image. Right now only 'raw' is supported.""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + focal_depth: float = Field(..., description="""Focal depth offset, in meters.""") + format: str = Field(..., description="""Format of image. Right now only 'raw' is supported.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], int]] = Field( None, json_schema_extra={ @@ -289,11 +279,11 @@ class ImagingRetinotopySignMap(ConfiguredBaseModel): "linkml_meta": {"equals_string": "sign_map", "ifabsent": "string(sign_map)"} }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -318,18 +308,16 @@ class ImagingRetinotopyVasculatureImage(ConfiguredBaseModel): } }, ) - bits_per_pixel: Optional[int] = Field( - None, + bits_per_pixel: int = Field( + ..., description="""Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value""", ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - format: Optional[str] = Field( - None, description="""Format of image. Right now only 'raw' is supported.""" - ) + 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.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], int]] = Field( None, json_schema_extra={ diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_base.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_base.py index bb4ef4e..4e8eeca 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_base.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_base.py @@ -130,10 +130,15 @@ class TimeSeries(NWBDataInterface): ) name: str = Field(...) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) data: TimeSeriesData = Field( ..., @@ -178,15 +183,17 @@ class TimeSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) conversion: Optional[float] = Field( - None, + 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( - None, + -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( - None, + 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[ @@ -212,9 +219,13 @@ class TimeSeriesStartingTime(ConfiguredBaseModel): "linkml_meta": {"equals_string": "starting_time", "ifabsent": "string(starting_time)"} }, ) - rate: Optional[float] = Field(None, description="""Sampling rate, in Hz.""") - unit: Optional[str] = Field( - None, description="""Unit of measurement for time, which is fixed to 'seconds'.""" + rate: float = Field(..., description="""Sampling rate, in Hz.""") + unit: Literal["seconds"] = Field( + "seconds", + description="""Unit of measurement for time, which is fixed to 'seconds'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "seconds", "ifabsent": "string(seconds)"} + }, ) value: float = Field(...) @@ -260,9 +271,7 @@ class Images(NWBDataInterface): ) name: str = Field("Images", json_schema_extra={"linkml_meta": {"ifabsent": "string(Images)"}}) - description: Optional[str] = Field( - None, 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.""") diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_behavior.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_behavior.py index 093f0b8..9609061 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_behavior.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_behavior.py @@ -84,10 +84,15 @@ class SpatialSeries(TimeSeries): reference_frame: Optional[str] = Field( None, description="""Description defining what exactly 'straight-ahead' means.""" ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -128,8 +133,9 @@ class SpatialSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) unit: Optional[str] = Field( - None, + "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'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[ Union[ diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_ecephys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_ecephys.py index 0138a95..58080df 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_ecephys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_ecephys.py @@ -130,10 +130,15 @@ class ElectricalSeries(TimeSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -198,10 +203,15 @@ class SpikeEventSeries(ElectricalSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -369,9 +379,9 @@ class ElectrodeGroup(NWBContainer): ) name: str = Field(...) - description: Optional[str] = Field(None, description="""Description of this electrode group.""") - location: Optional[str] = Field( - None, + description: str = Field(..., description="""Description of this electrode group.""") + location: str = Field( + ..., description="""Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible.""", ) position: Optional[ElectrodeGroupPosition] = Field( diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_epoch.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_epoch.py index 60ec786..a086155 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_epoch.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_epoch.py @@ -150,13 +150,11 @@ class TimeIntervals(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -194,9 +192,7 @@ class TimeIntervalsTimeseries(VectorData): timeseries: Optional[TimeSeries] = Field( None, description="""the TimeSeries that this index applies to.""" ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_file.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_file.py index 0b716c0..4e54cb8 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_file.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_file.py @@ -96,9 +96,7 @@ class ScratchData(NWBData): ) name: str = Field(...) - notes: Optional[str] = Field( - None, description="""Any notes the user has about the dataset being stored""" - ) + notes: str = Field(..., description="""Any notes the user has about the dataset being stored""") class NWBFile(NWBContainer): @@ -114,9 +112,10 @@ class NWBFile(NWBContainer): "root", json_schema_extra={"linkml_meta": {"equals_string": "root", "ifabsent": "string(root)"}}, ) - nwb_version: Optional[str] = Field( - None, + nwb_version: Literal["2.2.4"] = Field( + "2.2.4", description="""File version string. Use semantic versioning, e.g. 1.2.1. This will be the name of the format with trailing major, minor and patch numbers.""", + json_schema_extra={"linkml_meta": {"equals_string": "2.2.4", "ifabsent": "string(2.2.4)"}}, ) file_create_date: NDArray[Shape["* num_modifications"], datetime] = Field( ..., @@ -321,7 +320,7 @@ class GeneralSourceScript(ConfiguredBaseModel): "linkml_meta": {"equals_string": "source_script", "ifabsent": "string(source_script)"} }, ) - file_name: Optional[str] = Field(None, description="""Name of script file.""") + file_name: str = Field(..., description="""Name of script file.""") value: str = Field(...) @@ -464,13 +463,11 @@ class ExtracellularEphysElectrodes(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_icephys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_icephys.py index 0af6814..0749cca 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_icephys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_icephys.py @@ -107,8 +107,8 @@ class PatchClampSeries(TimeSeries): ) name: str = Field(...) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -127,10 +127,15 @@ class PatchClampSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -170,8 +175,8 @@ class PatchClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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"], float]] = Field( @@ -195,8 +200,8 @@ class CurrentClampSeries(PatchClampSeries): capacitance_compensation: Optional[float] = Field( None, description="""Capacitance compensation, in farads.""" ) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -214,10 +219,15 @@ class CurrentClampSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -257,9 +267,10 @@ class CurrentClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: Literal["volts"] = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}}, ) value: Any = Field(...) @@ -280,8 +291,8 @@ class IZeroClampSeries(CurrentClampSeries): ..., description="""Capacitance compensation, in farads, fixed to 0.0.""" ) data: CurrentClampSeriesData = Field(..., description="""Recorded voltage.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -299,10 +310,15 @@ class IZeroClampSeries(CurrentClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -342,8 +358,8 @@ class CurrentClampStimulusSeries(PatchClampSeries): name: str = Field(...) data: CurrentClampStimulusSeriesData = Field(..., description="""Stimulus current applied.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -361,10 +377,15 @@ class CurrentClampStimulusSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -404,9 +425,12 @@ class CurrentClampStimulusSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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(...) @@ -443,8 +467,8 @@ class VoltageClampSeries(PatchClampSeries): whole_cell_series_resistance_comp: Optional[VoltageClampSeriesWholeCellSeriesResistanceComp] = ( Field(None, description="""Whole cell series resistance compensation, in ohms.""") ) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -462,10 +486,15 @@ class VoltageClampSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -505,9 +534,12 @@ class VoltageClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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(...) @@ -528,9 +560,12 @@ class VoltageClampSeriesCapacitanceFast(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for capacitance_fast, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -551,9 +586,12 @@ class VoltageClampSeriesCapacitanceSlow(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for capacitance_fast, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -574,9 +612,10 @@ class VoltageClampSeriesResistanceCompBandwidth(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["hertz"] = Field( + "hertz", description="""Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'.""", + json_schema_extra={"linkml_meta": {"equals_string": "hertz", "ifabsent": "string(hertz)"}}, ) value: float = Field(...) @@ -597,9 +636,12 @@ class VoltageClampSeriesResistanceCompCorrection(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["percent"] = Field( + "percent", description="""Unit of measurement for resistance_comp_correction, which is fixed to 'percent'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "percent", "ifabsent": "string(percent)"} + }, ) value: float = Field(...) @@ -620,9 +662,12 @@ class VoltageClampSeriesResistanceCompPrediction(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["percent"] = Field( + "percent", description="""Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "percent", "ifabsent": "string(percent)"} + }, ) value: float = Field(...) @@ -643,9 +688,12 @@ class VoltageClampSeriesWholeCellCapacitanceComp(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -666,9 +714,10 @@ class VoltageClampSeriesWholeCellSeriesResistanceComp(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["ohms"] = Field( + "ohms", description="""Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.""", + json_schema_extra={"linkml_meta": {"equals_string": "ohms", "ifabsent": "string(ohms)"}}, ) value: float = Field(...) @@ -684,8 +733,8 @@ class VoltageClampStimulusSeries(PatchClampSeries): name: str = Field(...) data: VoltageClampStimulusSeriesData = Field(..., description="""Stimulus voltage applied.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -703,10 +752,15 @@ class VoltageClampStimulusSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -746,9 +800,10 @@ class VoltageClampStimulusSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: Literal["volts"] = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}}, ) value: Any = Field(...) @@ -824,13 +879,11 @@ class SweepTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_image.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_image.py index a1ababb..6d493d6 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_image.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_image.py @@ -159,10 +159,15 @@ class ImageSeries(TimeSeries): None, description="""Format of image. If this is 'external', then the attribute 'external_file' contains the path information to the image files. If this is 'raw', then the raw (single-channel) binary data is stored in the 'data' dataset. If this attribute is not present, then the default format='raw' case is assumed.""", ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -204,8 +209,8 @@ class ImageSeriesExternalFile(ConfiguredBaseModel): "linkml_meta": {"equals_string": "external_file", "ifabsent": "string(external_file)"} }, ) - starting_frame: Optional[int] = Field( - None, + starting_frame: List[int] = Field( + ..., description="""Each external image may contain one or more consecutive frames of the full ImageSeries. This attribute serves as an index to indicate which frames each file contains, to faciliate random access. The 'starting_frame' attribute, hence, contains a list of frame numbers within the full ImageSeries of the first frame of each file listed in the parent 'external_file' dataset. Zero-based indexing is used (hence, the first element will always be zero). For example, if the 'external_file' dataset has three paths to files and the first file has 5 frames, the second file has 10 frames, and the third file has 20 frames, then this attribute will have values [0, 5, 15]. If there is a single external file that holds all of the frames of the ImageSeries (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0].""", ) value: Optional[NDArray[Shape["* num_files"], str]] = Field( @@ -251,10 +256,15 @@ class ImageMaskSeries(ImageSeries): None, description="""Format of image. If this is 'external', then the attribute 'external_file' contains the path information to the image files. If this is 'raw', then the raw (single-channel) binary data is stored in the 'data' dataset. If this attribute is not present, then the default format='raw' case is assumed.""", ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -322,10 +332,15 @@ class OpticalSeries(ImageSeries): None, description="""Format of image. If this is 'external', then the attribute 'external_file' contains the path information to the image files. If this is 'raw', then the raw (single-channel) binary data is stored in the 'data' dataset. If this attribute is not present, then the default format='raw' case is assumed.""", ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -378,10 +393,15 @@ class IndexSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_misc.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_misc.py index 51b8cfc..fda23ec 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_misc.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_misc.py @@ -120,10 +120,15 @@ class AbstractFeatureSeries(TimeSeries): description="""Description of the features represented in TimeSeries::data.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_features"}]}}}, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -164,8 +169,9 @@ class AbstractFeatureSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) unit: Optional[str] = Field( - None, + "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'\".""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(see 'feature_units')"}}, ) value: Optional[ Union[ @@ -190,10 +196,15 @@ class AnnotationSeries(TimeSeries): description="""Annotations made during an experiment.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -237,10 +248,15 @@ class IntervalSeries(TimeSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -296,10 +312,15 @@ class DecompositionSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -339,9 +360,10 @@ class DecompositionSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: str = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no unit)"}}, ) value: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float]] = Field( None, @@ -403,13 +425,11 @@ class DecompositionSeriesBands(DynamicTable): description="""The standard deviation of Gaussian filters, in Hz.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_bands"}]}}}, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -513,13 +533,11 @@ class Units(DynamicTable): NDArray[Shape["* num_units, * num_samples, * num_electrodes"], float], ] ] = Field(None, description="""Spike waveform standard deviation for each spike unit.""") - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -550,9 +568,7 @@ class UnitsSpikeTimes(VectorData): None, description="""The smallest possible difference between two spike times. Usually 1 divided by the acquisition sampling rate from which spike times were extracted, but could be larger if the acquisition time series was downsampled or smaller if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be between samples.""", ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_ogen.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_ogen.py index 73f6642..9616063 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_ogen.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_ogen.py @@ -91,10 +91,15 @@ class OptogeneticSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_ophys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_ophys.py index 3c2ebd8..01ecf48 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_ophys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_ophys.py @@ -151,10 +151,15 @@ class TwoPhotonSeries(ImageSeries): None, description="""Format of image. If this is 'external', then the attribute 'external_file' contains the path information to the image files. If this is 'raw', then the raw (single-channel) binary data is stored in the 'data' dataset. If this attribute is not present, then the default format='raw' case is assumed.""", ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -208,10 +213,15 @@ class RoiResponseSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -345,13 +355,11 @@ class PlaneSegmentation(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -378,9 +386,7 @@ class PlaneSegmentationImageMask(VectorData): "linkml_meta": {"equals_string": "image_mask", "ifabsent": "string(image_mask)"} }, ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -407,9 +413,7 @@ class PlaneSegmentationPixelMask(VectorData): x: Optional[int] = Field(None, description="""Pixel x-coordinate.""") y: Optional[int] = Field(None, description="""Pixel y-coordinate.""") weight: Optional[float] = Field(None, description="""Weight of the pixel.""") - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -437,9 +441,7 @@ class PlaneSegmentationVoxelMask(VectorData): y: Optional[int] = Field(None, description="""Voxel y-coordinate.""") z: Optional[int] = Field(None, description="""Voxel z-coordinate.""") weight: Optional[float] = Field(None, description="""Weight of the voxel.""") - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -515,12 +517,14 @@ class ImagingPlaneManifold(ConfiguredBaseModel): }, ) conversion: Optional[float] = Field( - None, + 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 pixels from x = -500 to 499, y = -500 to 499 that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get from raw data acquisition pixel units to meters is 2/1000.""", + json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}}, ) unit: Optional[str] = Field( - None, + "meters", description="""Base unit of measurement for working with the data. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[ Union[ @@ -543,8 +547,10 @@ class ImagingPlaneOriginCoords(ConfiguredBaseModel): "linkml_meta": {"equals_string": "origin_coords", "ifabsent": "string(origin_coords)"} }, ) - unit: Optional[str] = Field( - None, description="""Measurement units for origin_coords. The default value is 'meters'.""" + unit: str = Field( + "meters", + description="""Measurement units for origin_coords. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[NDArray[Shape["2 x_y, 3 x_y_z"], float]] = Field( None, @@ -574,8 +580,10 @@ class ImagingPlaneGridSpacing(ConfiguredBaseModel): "linkml_meta": {"equals_string": "grid_spacing", "ifabsent": "string(grid_spacing)"} }, ) - unit: Optional[str] = Field( - None, description="""Measurement units for grid_spacing. The default value is 'meters'.""" + unit: str = Field( + "meters", + description="""Measurement units for grid_spacing. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[NDArray[Shape["2 x_y, 3 x_y_z"], float]] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_retinotopy.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_retinotopy.py index fc5368f..f7b47de 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_retinotopy.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_4/core_nwb_retinotopy.py @@ -127,14 +127,12 @@ class ImagingRetinotopyAxis1PhaseMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -159,14 +157,12 @@ class ImagingRetinotopyAxis1PowerMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -191,14 +187,12 @@ class ImagingRetinotopyAxis2PhaseMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -223,14 +217,12 @@ class ImagingRetinotopyAxis2PowerMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -255,19 +247,17 @@ class ImagingRetinotopyFocalDepthImage(ConfiguredBaseModel): } }, ) - bits_per_pixel: Optional[int] = Field( - None, + bits_per_pixel: int = Field( + ..., description="""Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value.""", ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - focal_depth: Optional[float] = Field(None, description="""Focal depth offset, in meters.""") - format: Optional[str] = Field( - None, description="""Format of image. Right now only 'raw' is supported.""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + focal_depth: float = Field(..., description="""Focal depth offset, in meters.""") + format: str = Field(..., description="""Format of image. Right now only 'raw' is supported.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], int]] = Field( None, json_schema_extra={ @@ -289,11 +279,11 @@ class ImagingRetinotopySignMap(ConfiguredBaseModel): "linkml_meta": {"equals_string": "sign_map", "ifabsent": "string(sign_map)"} }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -318,18 +308,16 @@ class ImagingRetinotopyVasculatureImage(ConfiguredBaseModel): } }, ) - bits_per_pixel: Optional[int] = Field( - None, + bits_per_pixel: int = Field( + ..., description="""Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value""", ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - format: Optional[str] = Field( - None, description="""Format of image. Right now only 'raw' is supported.""" - ) + 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.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], int]] = Field( None, json_schema_extra={ diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_base.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_base.py index 64796e9..99ff2d4 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_base.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_base.py @@ -130,10 +130,15 @@ class TimeSeries(NWBDataInterface): ) name: str = Field(...) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) data: TimeSeriesData = Field( ..., @@ -178,15 +183,17 @@ class TimeSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) conversion: Optional[float] = Field( - None, + 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( - None, + -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( - None, + 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[ @@ -212,9 +219,13 @@ class TimeSeriesStartingTime(ConfiguredBaseModel): "linkml_meta": {"equals_string": "starting_time", "ifabsent": "string(starting_time)"} }, ) - rate: Optional[float] = Field(None, description="""Sampling rate, in Hz.""") - unit: Optional[str] = Field( - None, description="""Unit of measurement for time, which is fixed to 'seconds'.""" + rate: float = Field(..., description="""Sampling rate, in Hz.""") + unit: Literal["seconds"] = Field( + "seconds", + description="""Unit of measurement for time, which is fixed to 'seconds'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "seconds", "ifabsent": "string(seconds)"} + }, ) value: float = Field(...) @@ -260,9 +271,7 @@ class Images(NWBDataInterface): ) name: str = Field("Images", json_schema_extra={"linkml_meta": {"ifabsent": "string(Images)"}}) - description: Optional[str] = Field( - None, 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.""") diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_behavior.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_behavior.py index 77b111a..da7c068 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_behavior.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_behavior.py @@ -84,10 +84,15 @@ class SpatialSeries(TimeSeries): reference_frame: Optional[str] = Field( None, description="""Description defining what exactly 'straight-ahead' means.""" ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -128,8 +133,9 @@ class SpatialSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) unit: Optional[str] = Field( - None, + "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'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[ Union[ diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_ecephys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_ecephys.py index 99b6083..4151cf7 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_ecephys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_ecephys.py @@ -130,10 +130,15 @@ class ElectricalSeries(TimeSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -198,10 +203,15 @@ class SpikeEventSeries(ElectricalSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -369,9 +379,9 @@ class ElectrodeGroup(NWBContainer): ) name: str = Field(...) - description: Optional[str] = Field(None, description="""Description of this electrode group.""") - location: Optional[str] = Field( - None, + description: str = Field(..., description="""Description of this electrode group.""") + location: str = Field( + ..., description="""Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible.""", ) position: Optional[ElectrodeGroupPosition] = Field( diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_epoch.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_epoch.py index ad80c60..900bbeb 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_epoch.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_epoch.py @@ -150,13 +150,11 @@ class TimeIntervals(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -194,9 +192,7 @@ class TimeIntervalsTimeseries(VectorData): timeseries: Optional[TimeSeries] = Field( None, description="""the TimeSeries that this index applies to.""" ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_file.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_file.py index a0344e1..1aab54d 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_file.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_file.py @@ -96,9 +96,7 @@ class ScratchData(NWBData): ) name: str = Field(...) - notes: Optional[str] = Field( - None, description="""Any notes the user has about the dataset being stored""" - ) + notes: str = Field(..., description="""Any notes the user has about the dataset being stored""") class NWBFile(NWBContainer): @@ -114,9 +112,10 @@ class NWBFile(NWBContainer): "root", json_schema_extra={"linkml_meta": {"equals_string": "root", "ifabsent": "string(root)"}}, ) - nwb_version: Optional[str] = Field( - None, + nwb_version: Literal["2.2.5"] = Field( + "2.2.5", description="""File version string. Use semantic versioning, e.g. 1.2.1. This will be the name of the format with trailing major, minor and patch numbers.""", + json_schema_extra={"linkml_meta": {"equals_string": "2.2.5", "ifabsent": "string(2.2.5)"}}, ) file_create_date: NDArray[Shape["* num_modifications"], datetime] = Field( ..., @@ -321,7 +320,7 @@ class GeneralSourceScript(ConfiguredBaseModel): "linkml_meta": {"equals_string": "source_script", "ifabsent": "string(source_script)"} }, ) - file_name: Optional[str] = Field(None, description="""Name of script file.""") + file_name: str = Field(..., description="""Name of script file.""") value: str = Field(...) @@ -464,13 +463,11 @@ class ExtracellularEphysElectrodes(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_icephys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_icephys.py index 0cdf6b1..b99d4ca 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_icephys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_icephys.py @@ -107,8 +107,8 @@ class PatchClampSeries(TimeSeries): ) name: str = Field(...) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -127,10 +127,15 @@ class PatchClampSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -170,8 +175,8 @@ class PatchClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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"], float]] = Field( @@ -195,8 +200,8 @@ class CurrentClampSeries(PatchClampSeries): capacitance_compensation: Optional[float] = Field( None, description="""Capacitance compensation, in farads.""" ) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -214,10 +219,15 @@ class CurrentClampSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -257,9 +267,10 @@ class CurrentClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: Literal["volts"] = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}}, ) value: Any = Field(...) @@ -280,8 +291,8 @@ class IZeroClampSeries(CurrentClampSeries): ..., description="""Capacitance compensation, in farads, fixed to 0.0.""" ) data: CurrentClampSeriesData = Field(..., description="""Recorded voltage.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -299,10 +310,15 @@ class IZeroClampSeries(CurrentClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -342,8 +358,8 @@ class CurrentClampStimulusSeries(PatchClampSeries): name: str = Field(...) data: CurrentClampStimulusSeriesData = Field(..., description="""Stimulus current applied.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -361,10 +377,15 @@ class CurrentClampStimulusSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -404,9 +425,12 @@ class CurrentClampStimulusSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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(...) @@ -443,8 +467,8 @@ class VoltageClampSeries(PatchClampSeries): whole_cell_series_resistance_comp: Optional[VoltageClampSeriesWholeCellSeriesResistanceComp] = ( Field(None, description="""Whole cell series resistance compensation, in ohms.""") ) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -462,10 +486,15 @@ class VoltageClampSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -505,9 +534,12 @@ class VoltageClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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(...) @@ -528,9 +560,12 @@ class VoltageClampSeriesCapacitanceFast(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for capacitance_fast, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -551,9 +586,12 @@ class VoltageClampSeriesCapacitanceSlow(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for capacitance_fast, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -574,9 +612,10 @@ class VoltageClampSeriesResistanceCompBandwidth(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["hertz"] = Field( + "hertz", description="""Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'.""", + json_schema_extra={"linkml_meta": {"equals_string": "hertz", "ifabsent": "string(hertz)"}}, ) value: float = Field(...) @@ -597,9 +636,12 @@ class VoltageClampSeriesResistanceCompCorrection(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["percent"] = Field( + "percent", description="""Unit of measurement for resistance_comp_correction, which is fixed to 'percent'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "percent", "ifabsent": "string(percent)"} + }, ) value: float = Field(...) @@ -620,9 +662,12 @@ class VoltageClampSeriesResistanceCompPrediction(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["percent"] = Field( + "percent", description="""Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "percent", "ifabsent": "string(percent)"} + }, ) value: float = Field(...) @@ -643,9 +688,12 @@ class VoltageClampSeriesWholeCellCapacitanceComp(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -666,9 +714,10 @@ class VoltageClampSeriesWholeCellSeriesResistanceComp(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["ohms"] = Field( + "ohms", description="""Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.""", + json_schema_extra={"linkml_meta": {"equals_string": "ohms", "ifabsent": "string(ohms)"}}, ) value: float = Field(...) @@ -684,8 +733,8 @@ class VoltageClampStimulusSeries(PatchClampSeries): name: str = Field(...) data: VoltageClampStimulusSeriesData = Field(..., description="""Stimulus voltage applied.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -703,10 +752,15 @@ class VoltageClampStimulusSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -746,9 +800,10 @@ class VoltageClampStimulusSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: Literal["volts"] = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}}, ) value: Any = Field(...) @@ -824,13 +879,11 @@ class SweepTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_image.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_image.py index e6790fa..98d7ef4 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_image.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_image.py @@ -159,10 +159,15 @@ class ImageSeries(TimeSeries): None, description="""Format of image. If this is 'external', then the attribute 'external_file' contains the path information to the image files. If this is 'raw', then the raw (single-channel) binary data is stored in the 'data' dataset. If this attribute is not present, then the default format='raw' case is assumed.""", ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -204,8 +209,8 @@ class ImageSeriesExternalFile(ConfiguredBaseModel): "linkml_meta": {"equals_string": "external_file", "ifabsent": "string(external_file)"} }, ) - starting_frame: Optional[int] = Field( - None, + starting_frame: List[int] = Field( + ..., description="""Each external image may contain one or more consecutive frames of the full ImageSeries. This attribute serves as an index to indicate which frames each file contains, to faciliate random access. The 'starting_frame' attribute, hence, contains a list of frame numbers within the full ImageSeries of the first frame of each file listed in the parent 'external_file' dataset. Zero-based indexing is used (hence, the first element will always be zero). For example, if the 'external_file' dataset has three paths to files and the first file has 5 frames, the second file has 10 frames, and the third file has 20 frames, then this attribute will have values [0, 5, 15]. If there is a single external file that holds all of the frames of the ImageSeries (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0].""", ) value: Optional[NDArray[Shape["* num_files"], str]] = Field( @@ -251,10 +256,15 @@ class ImageMaskSeries(ImageSeries): None, description="""Format of image. If this is 'external', then the attribute 'external_file' contains the path information to the image files. If this is 'raw', then the raw (single-channel) binary data is stored in the 'data' dataset. If this attribute is not present, then the default format='raw' case is assumed.""", ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -322,10 +332,15 @@ class OpticalSeries(ImageSeries): None, description="""Format of image. If this is 'external', then the attribute 'external_file' contains the path information to the image files. If this is 'raw', then the raw (single-channel) binary data is stored in the 'data' dataset. If this attribute is not present, then the default format='raw' case is assumed.""", ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -378,10 +393,15 @@ class IndexSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_misc.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_misc.py index c3f845e..591e521 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_misc.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_misc.py @@ -120,10 +120,15 @@ class AbstractFeatureSeries(TimeSeries): description="""Description of the features represented in TimeSeries::data.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_features"}]}}}, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -164,8 +169,9 @@ class AbstractFeatureSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) unit: Optional[str] = Field( - None, + "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'\".""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(see 'feature_units')"}}, ) value: Optional[ Union[ @@ -190,10 +196,15 @@ class AnnotationSeries(TimeSeries): description="""Annotations made during an experiment.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -237,10 +248,15 @@ class IntervalSeries(TimeSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -296,10 +312,15 @@ class DecompositionSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -339,9 +360,10 @@ class DecompositionSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: str = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no unit)"}}, ) value: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float]] = Field( None, @@ -403,13 +425,11 @@ class DecompositionSeriesBands(DynamicTable): description="""The standard deviation of Gaussian filters, in Hz.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_bands"}]}}}, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -513,13 +533,11 @@ class Units(DynamicTable): NDArray[Shape["* num_units, * num_samples, * num_electrodes"], float], ] ] = Field(None, description="""Spike waveform standard deviation for each spike unit.""") - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -550,9 +568,7 @@ class UnitsSpikeTimes(VectorData): None, description="""The smallest possible difference between two spike times. Usually 1 divided by the acquisition sampling rate from which spike times were extracted, but could be larger if the acquisition time series was downsampled or smaller if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be between samples.""", ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_ogen.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_ogen.py index c30f06b..c419baf 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_ogen.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_ogen.py @@ -91,10 +91,15 @@ class OptogeneticSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_ophys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_ophys.py index 6849817..3bb6356 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_ophys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_ophys.py @@ -153,10 +153,15 @@ class TwoPhotonSeries(ImageSeries): None, description="""Format of image. If this is 'external', then the attribute 'external_file' contains the path information to the image files. If this is 'raw', then the raw (single-channel) binary data is stored in the 'data' dataset. If this attribute is not present, then the default format='raw' case is assumed.""", ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -210,10 +215,15 @@ class RoiResponseSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -347,13 +357,11 @@ class PlaneSegmentation(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -380,9 +388,7 @@ class PlaneSegmentationImageMask(VectorData): "linkml_meta": {"equals_string": "image_mask", "ifabsent": "string(image_mask)"} }, ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -409,9 +415,7 @@ class PlaneSegmentationPixelMask(VectorData): x: Optional[int] = Field(None, description="""Pixel x-coordinate.""") y: Optional[int] = Field(None, description="""Pixel y-coordinate.""") weight: Optional[float] = Field(None, description="""Weight of the pixel.""") - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -439,9 +443,7 @@ class PlaneSegmentationVoxelMask(VectorData): y: Optional[int] = Field(None, description="""Voxel y-coordinate.""") z: Optional[int] = Field(None, description="""Voxel z-coordinate.""") weight: Optional[float] = Field(None, description="""Weight of the voxel.""") - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -517,12 +519,14 @@ class ImagingPlaneManifold(ConfiguredBaseModel): }, ) conversion: Optional[float] = Field( - None, + 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 pixels from x = -500 to 499, y = -500 to 499 that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get from raw data acquisition pixel units to meters is 2/1000.""", + json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}}, ) unit: Optional[str] = Field( - None, + "meters", description="""Base unit of measurement for working with the data. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[ Union[ @@ -545,8 +549,10 @@ class ImagingPlaneOriginCoords(ConfiguredBaseModel): "linkml_meta": {"equals_string": "origin_coords", "ifabsent": "string(origin_coords)"} }, ) - unit: Optional[str] = Field( - None, description="""Measurement units for origin_coords. The default value is 'meters'.""" + unit: str = Field( + "meters", + description="""Measurement units for origin_coords. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[Union[NDArray[Shape["2 x_y"], float], NDArray[Shape["3 x_y_z"], float]]] = ( Field(None) @@ -566,8 +572,10 @@ class ImagingPlaneGridSpacing(ConfiguredBaseModel): "linkml_meta": {"equals_string": "grid_spacing", "ifabsent": "string(grid_spacing)"} }, ) - unit: Optional[str] = Field( - None, description="""Measurement units for grid_spacing. The default value is 'meters'.""" + unit: str = Field( + "meters", + description="""Measurement units for grid_spacing. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[Union[NDArray[Shape["2 x_y"], float], NDArray[Shape["3 x_y_z"], float]]] = ( Field(None) diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_retinotopy.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_retinotopy.py index 79dacf3..3b83056 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_retinotopy.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_2_5/core_nwb_retinotopy.py @@ -127,14 +127,12 @@ class ImagingRetinotopyAxis1PhaseMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -159,14 +157,12 @@ class ImagingRetinotopyAxis1PowerMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -191,14 +187,12 @@ class ImagingRetinotopyAxis2PhaseMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -223,14 +217,12 @@ class ImagingRetinotopyAxis2PowerMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -255,19 +247,17 @@ class ImagingRetinotopyFocalDepthImage(ConfiguredBaseModel): } }, ) - bits_per_pixel: Optional[int] = Field( - None, + bits_per_pixel: int = Field( + ..., description="""Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value.""", ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - focal_depth: Optional[float] = Field(None, description="""Focal depth offset, in meters.""") - format: Optional[str] = Field( - None, description="""Format of image. Right now only 'raw' is supported.""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + focal_depth: float = Field(..., description="""Focal depth offset, in meters.""") + format: str = Field(..., description="""Format of image. Right now only 'raw' is supported.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], int]] = Field( None, json_schema_extra={ @@ -289,11 +279,11 @@ class ImagingRetinotopySignMap(ConfiguredBaseModel): "linkml_meta": {"equals_string": "sign_map", "ifabsent": "string(sign_map)"} }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -318,18 +308,16 @@ class ImagingRetinotopyVasculatureImage(ConfiguredBaseModel): } }, ) - bits_per_pixel: Optional[int] = Field( - None, + bits_per_pixel: int = Field( + ..., description="""Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value""", ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - format: Optional[str] = Field( - None, description="""Format of image. Right now only 'raw' is supported.""" - ) + 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.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], int]] = Field( None, json_schema_extra={ diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_base.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_base.py index c3683bc..8ce2390 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_base.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_base.py @@ -135,10 +135,15 @@ class TimeSeries(NWBDataInterface): ) name: str = Field(...) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) data: TimeSeriesData = Field( ..., @@ -183,15 +188,17 @@ class TimeSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) conversion: Optional[float] = Field( - None, + 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( - None, + -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( - None, + 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'.""", ) continuity: Optional[str] = Field( @@ -221,9 +228,13 @@ class TimeSeriesStartingTime(ConfiguredBaseModel): "linkml_meta": {"equals_string": "starting_time", "ifabsent": "string(starting_time)"} }, ) - rate: Optional[float] = Field(None, description="""Sampling rate, in Hz.""") - unit: Optional[str] = Field( - None, description="""Unit of measurement for time, which is fixed to 'seconds'.""" + rate: float = Field(..., description="""Sampling rate, in Hz.""") + unit: Literal["seconds"] = Field( + "seconds", + description="""Unit of measurement for time, which is fixed to 'seconds'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "seconds", "ifabsent": "string(seconds)"} + }, ) value: float = Field(...) @@ -269,9 +280,7 @@ class Images(NWBDataInterface): ) name: str = Field("Images", json_schema_extra={"linkml_meta": {"ifabsent": "string(Images)"}}) - description: Optional[str] = Field( - None, 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.""") diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_behavior.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_behavior.py index a469b16..9c8a529 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_behavior.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_behavior.py @@ -84,10 +84,15 @@ class SpatialSeries(TimeSeries): reference_frame: Optional[str] = Field( None, description="""Description defining what exactly 'straight-ahead' means.""" ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -128,8 +133,9 @@ class SpatialSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) unit: Optional[str] = Field( - None, + "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'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[ Union[ diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_ecephys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_ecephys.py index 19de749..c3b57c3 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_ecephys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_ecephys.py @@ -134,10 +134,15 @@ class ElectricalSeries(TimeSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -206,10 +211,15 @@ class SpikeEventSeries(ElectricalSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -377,9 +387,9 @@ class ElectrodeGroup(NWBContainer): ) name: str = Field(...) - description: Optional[str] = Field(None, description="""Description of this electrode group.""") - location: Optional[str] = Field( - None, + description: str = Field(..., description="""Description of this electrode group.""") + location: str = Field( + ..., description="""Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible.""", ) position: Optional[ElectrodeGroupPosition] = Field( diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_epoch.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_epoch.py index adfa639..d82e78d 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_epoch.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_epoch.py @@ -150,13 +150,11 @@ class TimeIntervals(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -191,9 +189,7 @@ class TimeIntervalsTimeseries(VectorData): timeseries: Optional[TimeSeries] = Field( None, description="""the TimeSeries that this index applies to.""" ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_file.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_file.py index 03e0af6..987b15e 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_file.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_file.py @@ -96,9 +96,7 @@ class ScratchData(NWBData): ) name: str = Field(...) - notes: Optional[str] = Field( - None, description="""Any notes the user has about the dataset being stored""" - ) + notes: str = Field(..., description="""Any notes the user has about the dataset being stored""") class NWBFile(NWBContainer): @@ -114,9 +112,10 @@ class NWBFile(NWBContainer): "root", json_schema_extra={"linkml_meta": {"equals_string": "root", "ifabsent": "string(root)"}}, ) - nwb_version: Optional[str] = Field( - None, + nwb_version: Literal["2.3.0"] = Field( + "2.3.0", description="""File version string. Use semantic versioning, e.g. 1.2.1. This will be the name of the format with trailing major, minor and patch numbers.""", + json_schema_extra={"linkml_meta": {"equals_string": "2.3.0", "ifabsent": "string(2.3.0)"}}, ) file_create_date: NDArray[Shape["* num_modifications"], datetime] = Field( ..., @@ -321,7 +320,7 @@ class GeneralSourceScript(ConfiguredBaseModel): "linkml_meta": {"equals_string": "source_script", "ifabsent": "string(source_script)"} }, ) - file_name: Optional[str] = Field(None, description="""Name of script file.""") + file_name: str = Field(..., description="""Name of script file.""") value: str = Field(...) @@ -464,13 +463,11 @@ class ExtracellularEphysElectrodes(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_icephys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_icephys.py index 2c8abe2..6cb3a16 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_icephys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_icephys.py @@ -107,8 +107,8 @@ class PatchClampSeries(TimeSeries): ) name: str = Field(...) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -127,10 +127,15 @@ class PatchClampSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -170,8 +175,8 @@ class PatchClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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"], float]] = Field( @@ -195,8 +200,8 @@ class CurrentClampSeries(PatchClampSeries): capacitance_compensation: Optional[float] = Field( None, description="""Capacitance compensation, in farads.""" ) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -214,10 +219,15 @@ class CurrentClampSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -257,9 +267,10 @@ class CurrentClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: Literal["volts"] = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}}, ) value: Any = Field(...) @@ -274,9 +285,10 @@ class IZeroClampSeries(CurrentClampSeries): ) name: str = Field(...) - stimulus_description: Optional[str] = Field( - None, + stimulus_description: Literal["N/A"] = Field( + "N/A", description="""An IZeroClampSeries has no stimulus, so this attribute is automatically set to \"N/A\"""", + json_schema_extra={"linkml_meta": {"equals_string": "N/A", "ifabsent": "string(N/A)"}}, ) bias_current: float = Field(..., description="""Bias current, in amps, fixed to 0.0.""") bridge_balance: float = Field(..., description="""Bridge balance, in ohms, fixed to 0.0.""") @@ -300,10 +312,15 @@ class IZeroClampSeries(CurrentClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -343,8 +360,8 @@ class CurrentClampStimulusSeries(PatchClampSeries): name: str = Field(...) data: CurrentClampStimulusSeriesData = Field(..., description="""Stimulus current applied.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -362,10 +379,15 @@ class CurrentClampStimulusSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -405,9 +427,12 @@ class CurrentClampStimulusSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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(...) @@ -444,8 +469,8 @@ class VoltageClampSeries(PatchClampSeries): whole_cell_series_resistance_comp: Optional[VoltageClampSeriesWholeCellSeriesResistanceComp] = ( Field(None, description="""Whole cell series resistance compensation, in ohms.""") ) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -463,10 +488,15 @@ class VoltageClampSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -506,9 +536,12 @@ class VoltageClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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(...) @@ -529,9 +562,12 @@ class VoltageClampSeriesCapacitanceFast(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for capacitance_fast, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -552,9 +588,12 @@ class VoltageClampSeriesCapacitanceSlow(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for capacitance_fast, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -575,9 +614,10 @@ class VoltageClampSeriesResistanceCompBandwidth(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["hertz"] = Field( + "hertz", description="""Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'.""", + json_schema_extra={"linkml_meta": {"equals_string": "hertz", "ifabsent": "string(hertz)"}}, ) value: float = Field(...) @@ -598,9 +638,12 @@ class VoltageClampSeriesResistanceCompCorrection(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["percent"] = Field( + "percent", description="""Unit of measurement for resistance_comp_correction, which is fixed to 'percent'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "percent", "ifabsent": "string(percent)"} + }, ) value: float = Field(...) @@ -621,9 +664,12 @@ class VoltageClampSeriesResistanceCompPrediction(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["percent"] = Field( + "percent", description="""Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "percent", "ifabsent": "string(percent)"} + }, ) value: float = Field(...) @@ -644,9 +690,12 @@ class VoltageClampSeriesWholeCellCapacitanceComp(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -667,9 +716,10 @@ class VoltageClampSeriesWholeCellSeriesResistanceComp(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["ohms"] = Field( + "ohms", description="""Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.""", + json_schema_extra={"linkml_meta": {"equals_string": "ohms", "ifabsent": "string(ohms)"}}, ) value: float = Field(...) @@ -685,8 +735,8 @@ class VoltageClampStimulusSeries(PatchClampSeries): name: str = Field(...) data: VoltageClampStimulusSeriesData = Field(..., description="""Stimulus voltage applied.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -704,10 +754,15 @@ class VoltageClampStimulusSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -747,9 +802,10 @@ class VoltageClampStimulusSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: Literal["volts"] = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}}, ) value: Any = Field(...) @@ -825,13 +881,11 @@ class SweepTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_image.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_image.py index fbe685b..8425dcc 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_image.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_image.py @@ -169,10 +169,15 @@ class ImageSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -214,8 +219,8 @@ class ImageSeriesExternalFile(ConfiguredBaseModel): "linkml_meta": {"equals_string": "external_file", "ifabsent": "string(external_file)"} }, ) - starting_frame: Optional[int] = Field( - None, + starting_frame: List[int] = Field( + ..., description="""Each external image may contain one or more consecutive frames of the full ImageSeries. This attribute serves as an index to indicate which frames each file contains, to faciliate random access. The 'starting_frame' attribute, hence, contains a list of frame numbers within the full ImageSeries of the first frame of each file listed in the parent 'external_file' dataset. Zero-based indexing is used (hence, the first element will always be zero). For example, if the 'external_file' dataset has three paths to files and the first file has 5 frames, the second file has 10 frames, and the third file has 20 frames, then this attribute will have values [0, 5, 15]. If there is a single external file that holds all of the frames of the ImageSeries (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0].""", ) value: Optional[NDArray[Shape["* num_files"], str]] = Field( @@ -270,10 +275,15 @@ class ImageMaskSeries(ImageSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -350,10 +360,15 @@ class OpticalSeries(ImageSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -406,10 +421,15 @@ class IndexSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_misc.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_misc.py index cbc95a2..c7336be 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_misc.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_misc.py @@ -120,10 +120,15 @@ class AbstractFeatureSeries(TimeSeries): description="""Description of the features represented in TimeSeries::data.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_features"}]}}}, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -164,8 +169,9 @@ class AbstractFeatureSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) unit: Optional[str] = Field( - None, + "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'\".""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(see 'feature_units')"}}, ) value: Optional[ Union[ @@ -190,10 +196,15 @@ class AnnotationSeries(TimeSeries): description="""Annotations made during an experiment.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -237,10 +248,15 @@ class IntervalSeries(TimeSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -308,10 +324,15 @@ class DecompositionSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -351,9 +372,10 @@ class DecompositionSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: str = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no unit)"}}, ) value: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float]] = Field( None, @@ -415,13 +437,11 @@ class DecompositionSeriesBands(DynamicTable): description="""The standard deviation of Gaussian filters, in Hz.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_bands"}]}}}, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -555,13 +575,11 @@ class Units(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -589,9 +607,7 @@ class UnitsSpikeTimes(VectorData): None, description="""The smallest possible difference between two spike times. Usually 1 divided by the acquisition sampling rate from which spike times were extracted, but could be larger if the acquisition time series was downsampled or smaller if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be between samples.""", ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_ogen.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_ogen.py index aa317fb..56f099a 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_ogen.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_ogen.py @@ -91,10 +91,15 @@ class OptogeneticSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_ophys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_ophys.py index 48ffbff..1aab4fb 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_ophys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_ophys.py @@ -162,10 +162,15 @@ class TwoPhotonSeries(ImageSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -219,10 +224,15 @@ class RoiResponseSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -356,13 +366,11 @@ class PlaneSegmentation(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -386,9 +394,7 @@ class PlaneSegmentationImageMask(VectorData): "linkml_meta": {"equals_string": "image_mask", "ifabsent": "string(image_mask)"} }, ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -415,9 +421,7 @@ class PlaneSegmentationPixelMask(VectorData): x: Optional[int] = Field(None, description="""Pixel x-coordinate.""") y: Optional[int] = Field(None, description="""Pixel y-coordinate.""") weight: Optional[float] = Field(None, description="""Weight of the pixel.""") - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -445,9 +449,7 @@ class PlaneSegmentationVoxelMask(VectorData): y: Optional[int] = Field(None, description="""Voxel y-coordinate.""") z: Optional[int] = Field(None, description="""Voxel z-coordinate.""") weight: Optional[float] = Field(None, description="""Weight of the voxel.""") - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -523,12 +525,14 @@ class ImagingPlaneManifold(ConfiguredBaseModel): }, ) conversion: Optional[float] = Field( - None, + 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 pixels from x = -500 to 499, y = -500 to 499 that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get from raw data acquisition pixel units to meters is 2/1000.""", + json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}}, ) unit: Optional[str] = Field( - None, + "meters", description="""Base unit of measurement for working with the data. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[ Union[ @@ -551,8 +555,10 @@ class ImagingPlaneOriginCoords(ConfiguredBaseModel): "linkml_meta": {"equals_string": "origin_coords", "ifabsent": "string(origin_coords)"} }, ) - unit: Optional[str] = Field( - None, description="""Measurement units for origin_coords. The default value is 'meters'.""" + unit: str = Field( + "meters", + description="""Measurement units for origin_coords. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[Union[NDArray[Shape["2 x_y"], float], NDArray[Shape["3 x_y_z"], float]]] = ( Field(None) @@ -572,8 +578,10 @@ class ImagingPlaneGridSpacing(ConfiguredBaseModel): "linkml_meta": {"equals_string": "grid_spacing", "ifabsent": "string(grid_spacing)"} }, ) - unit: Optional[str] = Field( - None, description="""Measurement units for grid_spacing. The default value is 'meters'.""" + unit: str = Field( + "meters", + description="""Measurement units for grid_spacing. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[Union[NDArray[Shape["2 x_y"], float], NDArray[Shape["3 x_y_z"], float]]] = ( Field(None) diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_retinotopy.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_retinotopy.py index 3f2c3c9..26e6c7d 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_retinotopy.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_3_0/core_nwb_retinotopy.py @@ -127,14 +127,12 @@ class ImagingRetinotopyAxis1PhaseMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -159,14 +157,12 @@ class ImagingRetinotopyAxis1PowerMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -191,14 +187,12 @@ class ImagingRetinotopyAxis2PhaseMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -223,14 +217,12 @@ class ImagingRetinotopyAxis2PowerMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -255,19 +247,17 @@ class ImagingRetinotopyFocalDepthImage(ConfiguredBaseModel): } }, ) - bits_per_pixel: Optional[int] = Field( - None, + bits_per_pixel: int = Field( + ..., description="""Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value.""", ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - focal_depth: Optional[float] = Field(None, description="""Focal depth offset, in meters.""") - format: Optional[str] = Field( - None, description="""Format of image. Right now only 'raw' is supported.""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + focal_depth: float = Field(..., description="""Focal depth offset, in meters.""") + format: str = Field(..., description="""Format of image. Right now only 'raw' is supported.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], int]] = Field( None, json_schema_extra={ @@ -289,11 +279,11 @@ class ImagingRetinotopySignMap(ConfiguredBaseModel): "linkml_meta": {"equals_string": "sign_map", "ifabsent": "string(sign_map)"} }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -318,18 +308,16 @@ class ImagingRetinotopyVasculatureImage(ConfiguredBaseModel): } }, ) - bits_per_pixel: Optional[int] = Field( - None, + bits_per_pixel: int = Field( + ..., description="""Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value""", ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - format: Optional[str] = Field( - None, description="""Format of image. Right now only 'raw' is supported.""" - ) + 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.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], int]] = Field( None, json_schema_extra={ diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_base.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_base.py index 38da923..c7e83cd 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_base.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_base.py @@ -99,9 +99,7 @@ class TimeSeriesReferenceVectorData(VectorData): description="""Number of data samples available in this time series, during this epoch""", ) timeseries: TimeSeries = Field(..., description="""The TimeSeries that this index applies to""") - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -169,10 +167,15 @@ class TimeSeries(NWBDataInterface): ) name: str = Field(...) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) data: TimeSeriesData = Field( ..., @@ -217,15 +220,17 @@ class TimeSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) conversion: Optional[float] = Field( - None, + 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( - None, + -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( - None, + 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'.""", ) continuity: Optional[str] = Field( @@ -255,9 +260,13 @@ class TimeSeriesStartingTime(ConfiguredBaseModel): "linkml_meta": {"equals_string": "starting_time", "ifabsent": "string(starting_time)"} }, ) - rate: Optional[float] = Field(None, description="""Sampling rate, in Hz.""") - unit: Optional[str] = Field( - None, description="""Unit of measurement for time, which is fixed to 'seconds'.""" + rate: float = Field(..., description="""Sampling rate, in Hz.""") + unit: Literal["seconds"] = Field( + "seconds", + description="""Unit of measurement for time, which is fixed to 'seconds'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "seconds", "ifabsent": "string(seconds)"} + }, ) value: float = Field(...) @@ -303,9 +312,7 @@ class Images(NWBDataInterface): ) name: str = Field("Images", json_schema_extra={"linkml_meta": {"ifabsent": "string(Images)"}}) - description: Optional[str] = Field( - None, 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.""") diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_behavior.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_behavior.py index 2d75ba0..7251865 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_behavior.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_behavior.py @@ -84,10 +84,15 @@ class SpatialSeries(TimeSeries): reference_frame: Optional[str] = Field( None, description="""Description defining what exactly 'straight-ahead' means.""" ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -128,8 +133,9 @@ class SpatialSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) unit: Optional[str] = Field( - None, + "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'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[ Union[ diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_ecephys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_ecephys.py index 7099d5a..8130e81 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_ecephys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_ecephys.py @@ -134,10 +134,15 @@ class ElectricalSeries(TimeSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -206,10 +211,15 @@ class SpikeEventSeries(ElectricalSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -377,9 +387,9 @@ class ElectrodeGroup(NWBContainer): ) name: str = Field(...) - description: Optional[str] = Field(None, description="""Description of this electrode group.""") - location: Optional[str] = Field( - None, + description: str = Field(..., description="""Description of this electrode group.""") + location: str = Field( + ..., description="""Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible.""", ) position: Optional[ElectrodeGroupPosition] = Field( diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_epoch.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_epoch.py index 3a0c3fb..8828e93 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_epoch.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_epoch.py @@ -150,13 +150,11 @@ class TimeIntervals(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -191,9 +189,7 @@ class TimeIntervalsTimeseries(VectorData): timeseries: Optional[TimeSeries] = Field( None, description="""the TimeSeries that this index applies to.""" ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_file.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_file.py index de70d34..b74e8b8 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_file.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_file.py @@ -104,9 +104,7 @@ class ScratchData(NWBData): ) name: str = Field(...) - notes: Optional[str] = Field( - None, description="""Any notes the user has about the dataset being stored""" - ) + notes: str = Field(..., description="""Any notes the user has about the dataset being stored""") class NWBFile(NWBContainer): @@ -122,9 +120,10 @@ class NWBFile(NWBContainer): "root", json_schema_extra={"linkml_meta": {"equals_string": "root", "ifabsent": "string(root)"}}, ) - nwb_version: Optional[str] = Field( - None, + nwb_version: Literal["2.4.0"] = Field( + "2.4.0", description="""File version string. Use semantic versioning, e.g. 1.2.1. This will be the name of the format with trailing major, minor and patch numbers.""", + json_schema_extra={"linkml_meta": {"equals_string": "2.4.0", "ifabsent": "string(2.4.0)"}}, ) file_create_date: NDArray[Shape["* num_modifications"], datetime] = Field( ..., @@ -329,7 +328,7 @@ class GeneralSourceScript(ConfiguredBaseModel): "linkml_meta": {"equals_string": "source_script", "ifabsent": "string(source_script)"} }, ) - file_name: Optional[str] = Field(None, description="""Name of script file.""") + file_name: str = Field(..., description="""Name of script file.""") value: str = Field(...) @@ -472,13 +471,11 @@ class ExtracellularEphysElectrodes(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_icephys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_icephys.py index 8d6b370..d21047d 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_icephys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_icephys.py @@ -114,8 +114,8 @@ class PatchClampSeries(TimeSeries): ) name: str = Field(...) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -134,10 +134,15 @@ class PatchClampSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -177,8 +182,8 @@ class PatchClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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"], float]] = Field( @@ -202,8 +207,8 @@ class CurrentClampSeries(PatchClampSeries): capacitance_compensation: Optional[float] = Field( None, description="""Capacitance compensation, in farads.""" ) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -221,10 +226,15 @@ class CurrentClampSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -264,9 +274,10 @@ class CurrentClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: Literal["volts"] = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}}, ) value: Any = Field(...) @@ -281,9 +292,10 @@ class IZeroClampSeries(CurrentClampSeries): ) name: str = Field(...) - stimulus_description: Optional[str] = Field( - None, + stimulus_description: Literal["N/A"] = Field( + "N/A", description="""An IZeroClampSeries has no stimulus, so this attribute is automatically set to \"N/A\"""", + json_schema_extra={"linkml_meta": {"equals_string": "N/A", "ifabsent": "string(N/A)"}}, ) bias_current: float = Field(..., description="""Bias current, in amps, fixed to 0.0.""") bridge_balance: float = Field(..., description="""Bridge balance, in ohms, fixed to 0.0.""") @@ -307,10 +319,15 @@ class IZeroClampSeries(CurrentClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -350,8 +367,8 @@ class CurrentClampStimulusSeries(PatchClampSeries): name: str = Field(...) data: CurrentClampStimulusSeriesData = Field(..., description="""Stimulus current applied.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -369,10 +386,15 @@ class CurrentClampStimulusSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -412,9 +434,12 @@ class CurrentClampStimulusSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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(...) @@ -451,8 +476,8 @@ class VoltageClampSeries(PatchClampSeries): whole_cell_series_resistance_comp: Optional[VoltageClampSeriesWholeCellSeriesResistanceComp] = ( Field(None, description="""Whole cell series resistance compensation, in ohms.""") ) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -470,10 +495,15 @@ class VoltageClampSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -513,9 +543,12 @@ class VoltageClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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(...) @@ -536,9 +569,12 @@ class VoltageClampSeriesCapacitanceFast(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for capacitance_fast, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -559,9 +595,12 @@ class VoltageClampSeriesCapacitanceSlow(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for capacitance_fast, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -582,9 +621,10 @@ class VoltageClampSeriesResistanceCompBandwidth(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["hertz"] = Field( + "hertz", description="""Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'.""", + json_schema_extra={"linkml_meta": {"equals_string": "hertz", "ifabsent": "string(hertz)"}}, ) value: float = Field(...) @@ -605,9 +645,12 @@ class VoltageClampSeriesResistanceCompCorrection(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["percent"] = Field( + "percent", description="""Unit of measurement for resistance_comp_correction, which is fixed to 'percent'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "percent", "ifabsent": "string(percent)"} + }, ) value: float = Field(...) @@ -628,9 +671,12 @@ class VoltageClampSeriesResistanceCompPrediction(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["percent"] = Field( + "percent", description="""Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "percent", "ifabsent": "string(percent)"} + }, ) value: float = Field(...) @@ -651,9 +697,12 @@ class VoltageClampSeriesWholeCellCapacitanceComp(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -674,9 +723,10 @@ class VoltageClampSeriesWholeCellSeriesResistanceComp(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["ohms"] = Field( + "ohms", description="""Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.""", + json_schema_extra={"linkml_meta": {"equals_string": "ohms", "ifabsent": "string(ohms)"}}, ) value: float = Field(...) @@ -692,8 +742,8 @@ class VoltageClampStimulusSeries(PatchClampSeries): name: str = Field(...) data: VoltageClampStimulusSeriesData = Field(..., description="""Stimulus voltage applied.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -711,10 +761,15 @@ class VoltageClampStimulusSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -754,9 +809,10 @@ class VoltageClampStimulusSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: Literal["volts"] = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}}, ) value: Any = Field(...) @@ -832,13 +888,11 @@ class SweepTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -859,14 +913,21 @@ class IntracellularElectrodesTable(DynamicTable): ) name: str = Field(...) - description: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" + description: Literal["Table for storing intracellular electrode related metadata."] = Field( + "Table for storing intracellular electrode related metadata.", + description="""Description of what is in this dynamic table.""", + json_schema_extra={ + "linkml_meta": { + "equals_string": "Table for storing intracellular electrode related metadata.", + "ifabsent": "string(Table for storing intracellular electrode related metadata.)", + } + }, ) electrode: List[IntracellularElectrode] = Field( ..., description="""Column for storing the reference to the intracellular electrode.""" ) - colnames: Optional[str] = Field( - None, + colnames: List[str] = Field( + ..., description="""The names of the columns in this table. This should be used to specify an order to the columns.""", ) id: NDArray[Shape["* num_rows"], int] = Field( @@ -889,8 +950,15 @@ class IntracellularStimuliTable(DynamicTable): ) name: str = Field(...) - description: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" + description: Literal["Table for storing intracellular stimulus related metadata."] = Field( + "Table for storing intracellular stimulus related metadata.", + description="""Description of what is in this dynamic table.""", + json_schema_extra={ + "linkml_meta": { + "equals_string": "Table for storing intracellular stimulus related metadata.", + "ifabsent": "string(Table for storing intracellular stimulus related metadata.)", + } + }, ) stimulus: Named[TimeSeriesReferenceVectorData] = Field( ..., @@ -904,8 +972,8 @@ class IntracellularStimuliTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + colnames: List[str] = Field( + ..., description="""The names of the columns in this table. This should be used to specify an order to the columns.""", ) id: NDArray[Shape["* num_rows"], int] = Field( @@ -928,8 +996,15 @@ class IntracellularResponsesTable(DynamicTable): ) name: str = Field(...) - description: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" + description: Literal["Table for storing intracellular response related metadata."] = Field( + "Table for storing intracellular response related metadata.", + description="""Description of what is in this dynamic table.""", + json_schema_extra={ + "linkml_meta": { + "equals_string": "Table for storing intracellular response related metadata.", + "ifabsent": "string(Table for storing intracellular response related metadata.)", + } + }, ) response: Named[TimeSeriesReferenceVectorData] = Field( ..., @@ -943,8 +1018,8 @@ class IntracellularResponsesTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + colnames: List[str] = Field( + ..., description="""The names of the columns in this table. This should be used to specify an order to the columns.""", ) id: NDArray[Shape["* num_rows"], int] = Field( @@ -975,9 +1050,27 @@ class IntracellularRecordingsTable(AlignedDynamicTable): } }, ) - description: Optional[str] = Field( - None, + description: Literal[ + "A table to group together a stimulus and response from a single electrode and a single" + " simultaneous recording and for storing metadata about the intracellular recording." + ] = Field( + "A table to group together a stimulus and response from a single electrode and a single" + " simultaneous recording and for storing metadata about the intracellular recording.", description="""Description of the contents of this table. Inherited from AlignedDynamicTable and overwritten here to fix the value of the attribute.""", + json_schema_extra={ + "linkml_meta": { + "equals_string": ( + "A table to group together a stimulus and response from a " + "single electrode and a single simultaneous recording and " + "for storing metadata about the intracellular recording." + ), + "ifabsent": ( + "string(A table to group together a stimulus and response from a " + "single electrode and a single simultaneous recording and for " + "storing metadata about the intracellular recording.)" + ), + } + }, ) electrodes: IntracellularElectrodesTable = Field( ..., description="""Table for storing intracellular electrode related metadata.""" @@ -991,8 +1084,8 @@ class IntracellularRecordingsTable(AlignedDynamicTable): value: Optional[List[DynamicTable]] = Field( None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "DynamicTable"}]}} ) - colnames: Optional[str] = Field( - None, + colnames: List[str] = Field( + ..., description="""The names of the columns in this table. This should be used to specify an order to the columns.""", ) id: NDArray[Shape["* num_rows"], int] = Field( @@ -1039,13 +1132,11 @@ class SimultaneousRecordingsTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -1069,12 +1160,12 @@ class SimultaneousRecordingsTableRecordings(DynamicTableRegion): "linkml_meta": {"equals_string": "recordings", "ifabsent": "string(recordings)"} }, ) - table: Optional[IntracellularRecordingsTable] = Field( - None, + table: IntracellularRecordingsTable = Field( + ..., description="""Reference to the IntracellularRecordingsTable table that this table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here.""", ) - description: Optional[str] = Field( - None, description="""Description of what this table region points to.""" + description: str = Field( + ..., description="""Description of what this table region points to.""" ) value: Optional[ Union[ @@ -1129,13 +1220,11 @@ class SequentialRecordingsTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -1162,12 +1251,12 @@ class SequentialRecordingsTableSimultaneousRecordings(DynamicTableRegion): } }, ) - table: Optional[SimultaneousRecordingsTable] = Field( - None, + table: SimultaneousRecordingsTable = Field( + ..., description="""Reference to the SimultaneousRecordingsTable table that this table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here.""", ) - description: Optional[str] = Field( - None, description="""Description of what this table region points to.""" + description: str = Field( + ..., description="""Description of what this table region points to.""" ) value: Optional[ Union[ @@ -1210,13 +1299,11 @@ class RepetitionsTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -1243,12 +1330,12 @@ class RepetitionsTableSequentialRecordings(DynamicTableRegion): } }, ) - table: Optional[SequentialRecordingsTable] = Field( - None, + table: SequentialRecordingsTable = Field( + ..., description="""Reference to the SequentialRecordingsTable table that this table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here.""", ) - description: Optional[str] = Field( - None, description="""Description of what this table region points to.""" + description: str = Field( + ..., description="""Description of what this table region points to.""" ) value: Optional[ Union[ @@ -1293,13 +1380,11 @@ class ExperimentalConditionsTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -1323,12 +1408,12 @@ class ExperimentalConditionsTableRepetitions(DynamicTableRegion): "linkml_meta": {"equals_string": "repetitions", "ifabsent": "string(repetitions)"} }, ) - table: Optional[RepetitionsTable] = Field( - None, + table: RepetitionsTable = Field( + ..., description="""Reference to the RepetitionsTable table that this table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here.""", ) - description: Optional[str] = Field( - None, description="""Description of what this table region points to.""" + description: str = Field( + ..., description="""Description of what this table region points to.""" ) value: Optional[ Union[ diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_image.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_image.py index 249545b..631f809 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_image.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_image.py @@ -169,10 +169,15 @@ class ImageSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -214,8 +219,8 @@ class ImageSeriesExternalFile(ConfiguredBaseModel): "linkml_meta": {"equals_string": "external_file", "ifabsent": "string(external_file)"} }, ) - starting_frame: Optional[int] = Field( - None, + starting_frame: List[int] = Field( + ..., description="""Each external image may contain one or more consecutive frames of the full ImageSeries. This attribute serves as an index to indicate which frames each file contains, to faciliate random access. The 'starting_frame' attribute, hence, contains a list of frame numbers within the full ImageSeries of the first frame of each file listed in the parent 'external_file' dataset. Zero-based indexing is used (hence, the first element will always be zero). For example, if the 'external_file' dataset has three paths to files and the first file has 5 frames, the second file has 10 frames, and the third file has 20 frames, then this attribute will have values [0, 5, 15]. If there is a single external file that holds all of the frames of the ImageSeries (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0].""", ) value: Optional[NDArray[Shape["* num_files"], str]] = Field( @@ -270,10 +275,15 @@ class ImageMaskSeries(ImageSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -350,10 +360,15 @@ class OpticalSeries(ImageSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -406,10 +421,15 @@ class IndexSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_misc.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_misc.py index 804a7c2..b9919ef 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_misc.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_misc.py @@ -120,10 +120,15 @@ class AbstractFeatureSeries(TimeSeries): description="""Description of the features represented in TimeSeries::data.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_features"}]}}}, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -164,8 +169,9 @@ class AbstractFeatureSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) unit: Optional[str] = Field( - None, + "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'\".""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(see 'feature_units')"}}, ) value: Optional[ Union[ @@ -190,10 +196,15 @@ class AnnotationSeries(TimeSeries): description="""Annotations made during an experiment.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -237,10 +248,15 @@ class IntervalSeries(TimeSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -308,10 +324,15 @@ class DecompositionSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -351,9 +372,10 @@ class DecompositionSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: str = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no unit)"}}, ) value: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float]] = Field( None, @@ -415,13 +437,11 @@ class DecompositionSeriesBands(DynamicTable): description="""The standard deviation of Gaussian filters, in Hz.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_bands"}]}}}, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -555,13 +575,11 @@ class Units(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -589,9 +607,7 @@ class UnitsSpikeTimes(VectorData): None, description="""The smallest possible difference between two spike times. Usually 1 divided by the acquisition sampling rate from which spike times were extracted, but could be larger if the acquisition time series was downsampled or smaller if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be between samples.""", ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_ogen.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_ogen.py index 1720289..da627b1 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_ogen.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_ogen.py @@ -91,10 +91,15 @@ class OptogeneticSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_ophys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_ophys.py index 9fabdb8..47b323c 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_ophys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_ophys.py @@ -162,10 +162,15 @@ class TwoPhotonSeries(ImageSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -219,10 +224,15 @@ class RoiResponseSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -356,13 +366,11 @@ class PlaneSegmentation(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -386,9 +394,7 @@ class PlaneSegmentationImageMask(VectorData): "linkml_meta": {"equals_string": "image_mask", "ifabsent": "string(image_mask)"} }, ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -415,9 +421,7 @@ class PlaneSegmentationPixelMask(VectorData): x: Optional[int] = Field(None, description="""Pixel x-coordinate.""") y: Optional[int] = Field(None, description="""Pixel y-coordinate.""") weight: Optional[float] = Field(None, description="""Weight of the pixel.""") - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -445,9 +449,7 @@ class PlaneSegmentationVoxelMask(VectorData): y: Optional[int] = Field(None, description="""Voxel y-coordinate.""") z: Optional[int] = Field(None, description="""Voxel z-coordinate.""") weight: Optional[float] = Field(None, description="""Weight of the voxel.""") - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -523,12 +525,14 @@ class ImagingPlaneManifold(ConfiguredBaseModel): }, ) conversion: Optional[float] = Field( - None, + 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 pixels from x = -500 to 499, y = -500 to 499 that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get from raw data acquisition pixel units to meters is 2/1000.""", + json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}}, ) unit: Optional[str] = Field( - None, + "meters", description="""Base unit of measurement for working with the data. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[ Union[ @@ -551,8 +555,10 @@ class ImagingPlaneOriginCoords(ConfiguredBaseModel): "linkml_meta": {"equals_string": "origin_coords", "ifabsent": "string(origin_coords)"} }, ) - unit: Optional[str] = Field( - None, description="""Measurement units for origin_coords. The default value is 'meters'.""" + unit: str = Field( + "meters", + description="""Measurement units for origin_coords. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[Union[NDArray[Shape["2 x_y"], float], NDArray[Shape["3 x_y_z"], float]]] = ( Field(None) @@ -572,8 +578,10 @@ class ImagingPlaneGridSpacing(ConfiguredBaseModel): "linkml_meta": {"equals_string": "grid_spacing", "ifabsent": "string(grid_spacing)"} }, ) - unit: Optional[str] = Field( - None, description="""Measurement units for grid_spacing. The default value is 'meters'.""" + unit: str = Field( + "meters", + description="""Measurement units for grid_spacing. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[Union[NDArray[Shape["2 x_y"], float], NDArray[Shape["3 x_y_z"], float]]] = ( Field(None) diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_retinotopy.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_retinotopy.py index f75b79b..825df96 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_retinotopy.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_4_0/core_nwb_retinotopy.py @@ -127,14 +127,12 @@ class ImagingRetinotopyAxis1PhaseMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -159,14 +157,12 @@ class ImagingRetinotopyAxis1PowerMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -191,14 +187,12 @@ class ImagingRetinotopyAxis2PhaseMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -223,14 +217,12 @@ class ImagingRetinotopyAxis2PowerMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -255,19 +247,17 @@ class ImagingRetinotopyFocalDepthImage(ConfiguredBaseModel): } }, ) - bits_per_pixel: Optional[int] = Field( - None, + bits_per_pixel: int = Field( + ..., description="""Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value.""", ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - focal_depth: Optional[float] = Field(None, description="""Focal depth offset, in meters.""") - format: Optional[str] = Field( - None, description="""Format of image. Right now only 'raw' is supported.""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + focal_depth: float = Field(..., description="""Focal depth offset, in meters.""") + format: str = Field(..., description="""Format of image. Right now only 'raw' is supported.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], int]] = Field( None, json_schema_extra={ @@ -289,11 +279,11 @@ class ImagingRetinotopySignMap(ConfiguredBaseModel): "linkml_meta": {"equals_string": "sign_map", "ifabsent": "string(sign_map)"} }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -318,18 +308,16 @@ class ImagingRetinotopyVasculatureImage(ConfiguredBaseModel): } }, ) - bits_per_pixel: Optional[int] = Field( - None, + bits_per_pixel: int = Field( + ..., description="""Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value""", ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - format: Optional[str] = Field( - None, description="""Format of image. Right now only 'raw' is supported.""" - ) + 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.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], int]] = Field( None, json_schema_extra={ diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_base.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_base.py index 0f2fc41..ab1c061 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_base.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_base.py @@ -123,9 +123,7 @@ class TimeSeriesReferenceVectorData(VectorData): description="""Number of data samples available in this time series, during this epoch""", ) timeseries: TimeSeries = Field(..., description="""The TimeSeries that this index applies to""") - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -214,10 +212,15 @@ class TimeSeries(NWBDataInterface): ) name: str = Field(...) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) data: TimeSeriesData = Field( ..., @@ -262,19 +265,21 @@ class TimeSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) conversion: Optional[float] = Field( - None, + 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)"}}, ) offset: Optional[float] = Field( None, description="""Scalar to add to the data after scaling by 'conversion' to finalize its coercion to the specified 'unit'. Two common examples of this include (a) data stored in an unsigned type that requires a shift after scaling to re-center the data, and (b) specialized recording devices that naturally cause a scalar offset with respect to the true units.""", ) resolution: Optional[float] = Field( - None, + -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( - None, + 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' and add 'offset'.""", ) continuity: Optional[str] = Field( @@ -304,9 +309,13 @@ class TimeSeriesStartingTime(ConfiguredBaseModel): "linkml_meta": {"equals_string": "starting_time", "ifabsent": "string(starting_time)"} }, ) - rate: Optional[float] = Field(None, description="""Sampling rate, in Hz.""") - unit: Optional[str] = Field( - None, description="""Unit of measurement for time, which is fixed to 'seconds'.""" + rate: float = Field(..., description="""Sampling rate, in Hz.""") + unit: Literal["seconds"] = Field( + "seconds", + description="""Unit of measurement for time, which is fixed to 'seconds'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "seconds", "ifabsent": "string(seconds)"} + }, ) value: float = Field(...) @@ -352,9 +361,7 @@ class Images(NWBDataInterface): ) name: str = Field("Images", json_schema_extra={"linkml_meta": {"ifabsent": "string(Images)"}}) - description: Optional[str] = Field( - None, 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.""") order_of_images: Named[Optional[ImageReferences]] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_behavior.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_behavior.py index ffe0f14..c295739 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_behavior.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_behavior.py @@ -84,10 +84,15 @@ class SpatialSeries(TimeSeries): reference_frame: Optional[str] = Field( None, description="""Description defining what exactly 'straight-ahead' means.""" ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -128,8 +133,9 @@ class SpatialSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) unit: Optional[str] = Field( - None, + "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' and add 'offset'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[ Union[ diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_ecephys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_ecephys.py index 997828f..74c571f 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_ecephys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_ecephys.py @@ -134,10 +134,15 @@ class ElectricalSeries(TimeSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -206,10 +211,15 @@ class SpikeEventSeries(ElectricalSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -377,9 +387,9 @@ class ElectrodeGroup(NWBContainer): ) name: str = Field(...) - description: Optional[str] = Field(None, description="""Description of this electrode group.""") - location: Optional[str] = Field( - None, + description: str = Field(..., description="""Description of this electrode group.""") + location: str = Field( + ..., description="""Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible.""", ) position: Optional[ElectrodeGroupPosition] = Field( diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_epoch.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_epoch.py index c399761..9181482 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_epoch.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_epoch.py @@ -159,13 +159,11 @@ class TimeIntervals(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_file.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_file.py index 541ba5e..dc3dd77 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_file.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_file.py @@ -105,9 +105,7 @@ class ScratchData(NWBData): ) name: str = Field(...) - notes: Optional[str] = Field( - None, description="""Any notes the user has about the dataset being stored""" - ) + notes: str = Field(..., description="""Any notes the user has about the dataset being stored""") class NWBFile(NWBContainer): @@ -123,9 +121,10 @@ class NWBFile(NWBContainer): "root", json_schema_extra={"linkml_meta": {"equals_string": "root", "ifabsent": "string(root)"}}, ) - nwb_version: Optional[str] = Field( - None, + nwb_version: Literal["2.5.0"] = Field( + "2.5.0", description="""File version string. Use semantic versioning, e.g. 1.2.1. This will be the name of the format with trailing major, minor and patch numbers.""", + json_schema_extra={"linkml_meta": {"equals_string": "2.5.0", "ifabsent": "string(2.5.0)"}}, ) file_create_date: NDArray[Shape["* num_modifications"], datetime] = Field( ..., @@ -332,7 +331,7 @@ class GeneralSourceScript(ConfiguredBaseModel): "linkml_meta": {"equals_string": "source_script", "ifabsent": "string(source_script)"} }, ) - file_name: Optional[str] = Field(None, description="""Name of script file.""") + file_name: str = Field(..., description="""Name of script file.""") value: str = Field(...) @@ -475,13 +474,11 @@ class ExtracellularEphysElectrodes(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_icephys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_icephys.py index b1c9fce..e5ab584 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_icephys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_icephys.py @@ -114,8 +114,8 @@ class PatchClampSeries(TimeSeries): ) name: str = Field(...) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -134,10 +134,15 @@ class PatchClampSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -177,8 +182,8 @@ class PatchClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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' and add 'offset'.""", ) value: Optional[NDArray[Shape["* num_times"], float]] = Field( @@ -202,8 +207,8 @@ class CurrentClampSeries(PatchClampSeries): capacitance_compensation: Optional[float] = Field( None, description="""Capacitance compensation, in farads.""" ) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -221,10 +226,15 @@ class CurrentClampSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -264,9 +274,10 @@ class CurrentClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: Literal["volts"] = Field( + "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' and add 'offset'.""", + json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}}, ) value: Any = Field(...) @@ -281,9 +292,10 @@ class IZeroClampSeries(CurrentClampSeries): ) name: str = Field(...) - stimulus_description: Optional[str] = Field( - None, + stimulus_description: Literal["N/A"] = Field( + "N/A", description="""An IZeroClampSeries has no stimulus, so this attribute is automatically set to \"N/A\"""", + json_schema_extra={"linkml_meta": {"equals_string": "N/A", "ifabsent": "string(N/A)"}}, ) bias_current: float = Field(..., description="""Bias current, in amps, fixed to 0.0.""") bridge_balance: float = Field(..., description="""Bridge balance, in ohms, fixed to 0.0.""") @@ -307,10 +319,15 @@ class IZeroClampSeries(CurrentClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -350,8 +367,8 @@ class CurrentClampStimulusSeries(PatchClampSeries): name: str = Field(...) data: CurrentClampStimulusSeriesData = Field(..., description="""Stimulus current applied.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -369,10 +386,15 @@ class CurrentClampStimulusSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -412,9 +434,12 @@ class CurrentClampStimulusSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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' and add 'offset'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"} + }, ) value: Any = Field(...) @@ -451,8 +476,8 @@ class VoltageClampSeries(PatchClampSeries): whole_cell_series_resistance_comp: Optional[VoltageClampSeriesWholeCellSeriesResistanceComp] = ( Field(None, description="""Whole cell series resistance compensation, in ohms.""") ) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -470,10 +495,15 @@ class VoltageClampSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -513,9 +543,12 @@ class VoltageClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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' and add 'offset'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"} + }, ) value: Any = Field(...) @@ -536,9 +569,12 @@ class VoltageClampSeriesCapacitanceFast(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for capacitance_fast, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -559,9 +595,12 @@ class VoltageClampSeriesCapacitanceSlow(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for capacitance_fast, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -582,9 +621,10 @@ class VoltageClampSeriesResistanceCompBandwidth(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["hertz"] = Field( + "hertz", description="""Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'.""", + json_schema_extra={"linkml_meta": {"equals_string": "hertz", "ifabsent": "string(hertz)"}}, ) value: float = Field(...) @@ -605,9 +645,12 @@ class VoltageClampSeriesResistanceCompCorrection(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["percent"] = Field( + "percent", description="""Unit of measurement for resistance_comp_correction, which is fixed to 'percent'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "percent", "ifabsent": "string(percent)"} + }, ) value: float = Field(...) @@ -628,9 +671,12 @@ class VoltageClampSeriesResistanceCompPrediction(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["percent"] = Field( + "percent", description="""Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "percent", "ifabsent": "string(percent)"} + }, ) value: float = Field(...) @@ -651,9 +697,12 @@ class VoltageClampSeriesWholeCellCapacitanceComp(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -674,9 +723,10 @@ class VoltageClampSeriesWholeCellSeriesResistanceComp(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["ohms"] = Field( + "ohms", description="""Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.""", + json_schema_extra={"linkml_meta": {"equals_string": "ohms", "ifabsent": "string(ohms)"}}, ) value: float = Field(...) @@ -692,8 +742,8 @@ class VoltageClampStimulusSeries(PatchClampSeries): name: str = Field(...) data: VoltageClampStimulusSeriesData = Field(..., description="""Stimulus voltage applied.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -711,10 +761,15 @@ class VoltageClampStimulusSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -754,9 +809,10 @@ class VoltageClampStimulusSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: Literal["volts"] = Field( + "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' and add 'offset'.""", + json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}}, ) value: Any = Field(...) @@ -833,13 +889,11 @@ class SweepTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -860,14 +914,21 @@ class IntracellularElectrodesTable(DynamicTable): ) name: str = Field(...) - description: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" + description: Literal["Table for storing intracellular electrode related metadata."] = Field( + "Table for storing intracellular electrode related metadata.", + description="""Description of what is in this dynamic table.""", + json_schema_extra={ + "linkml_meta": { + "equals_string": "Table for storing intracellular electrode related metadata.", + "ifabsent": "string(Table for storing intracellular electrode related metadata.)", + } + }, ) electrode: List[IntracellularElectrode] = Field( ..., description="""Column for storing the reference to the intracellular electrode.""" ) - colnames: Optional[str] = Field( - None, + colnames: List[str] = Field( + ..., description="""The names of the columns in this table. This should be used to specify an order to the columns.""", ) id: NDArray[Shape["* num_rows"], int] = Field( @@ -890,8 +951,15 @@ class IntracellularStimuliTable(DynamicTable): ) name: str = Field(...) - description: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" + description: Literal["Table for storing intracellular stimulus related metadata."] = Field( + "Table for storing intracellular stimulus related metadata.", + description="""Description of what is in this dynamic table.""", + json_schema_extra={ + "linkml_meta": { + "equals_string": "Table for storing intracellular stimulus related metadata.", + "ifabsent": "string(Table for storing intracellular stimulus related metadata.)", + } + }, ) stimulus: Named[TimeSeriesReferenceVectorData] = Field( ..., @@ -905,8 +973,8 @@ class IntracellularStimuliTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + colnames: List[str] = Field( + ..., description="""The names of the columns in this table. This should be used to specify an order to the columns.""", ) id: NDArray[Shape["* num_rows"], int] = Field( @@ -929,8 +997,15 @@ class IntracellularResponsesTable(DynamicTable): ) name: str = Field(...) - description: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" + description: Literal["Table for storing intracellular response related metadata."] = Field( + "Table for storing intracellular response related metadata.", + description="""Description of what is in this dynamic table.""", + json_schema_extra={ + "linkml_meta": { + "equals_string": "Table for storing intracellular response related metadata.", + "ifabsent": "string(Table for storing intracellular response related metadata.)", + } + }, ) response: Named[TimeSeriesReferenceVectorData] = Field( ..., @@ -944,8 +1019,8 @@ class IntracellularResponsesTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + colnames: List[str] = Field( + ..., description="""The names of the columns in this table. This should be used to specify an order to the columns.""", ) id: NDArray[Shape["* num_rows"], int] = Field( @@ -976,9 +1051,27 @@ class IntracellularRecordingsTable(AlignedDynamicTable): } }, ) - description: Optional[str] = Field( - None, + description: Literal[ + "A table to group together a stimulus and response from a single electrode and a single" + " simultaneous recording and for storing metadata about the intracellular recording." + ] = Field( + "A table to group together a stimulus and response from a single electrode and a single" + " simultaneous recording and for storing metadata about the intracellular recording.", description="""Description of the contents of this table. Inherited from AlignedDynamicTable and overwritten here to fix the value of the attribute.""", + json_schema_extra={ + "linkml_meta": { + "equals_string": ( + "A table to group together a stimulus and response from a " + "single electrode and a single simultaneous recording and " + "for storing metadata about the intracellular recording." + ), + "ifabsent": ( + "string(A table to group together a stimulus and response from a " + "single electrode and a single simultaneous recording and for " + "storing metadata about the intracellular recording.)" + ), + } + }, ) electrodes: IntracellularElectrodesTable = Field( ..., description="""Table for storing intracellular electrode related metadata.""" @@ -992,8 +1085,8 @@ class IntracellularRecordingsTable(AlignedDynamicTable): value: Optional[List[DynamicTable]] = Field( None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "DynamicTable"}]}} ) - colnames: Optional[str] = Field( - None, + colnames: List[str] = Field( + ..., description="""The names of the columns in this table. This should be used to specify an order to the columns.""", ) id: NDArray[Shape["* num_rows"], int] = Field( @@ -1040,13 +1133,11 @@ class SimultaneousRecordingsTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -1070,12 +1161,12 @@ class SimultaneousRecordingsTableRecordings(DynamicTableRegion): "linkml_meta": {"equals_string": "recordings", "ifabsent": "string(recordings)"} }, ) - table: Optional[IntracellularRecordingsTable] = Field( - None, + table: IntracellularRecordingsTable = Field( + ..., description="""Reference to the IntracellularRecordingsTable table that this table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here.""", ) - description: Optional[str] = Field( - None, description="""Description of what this table region points to.""" + description: str = Field( + ..., description="""Description of what this table region points to.""" ) value: Optional[ Union[ @@ -1130,13 +1221,11 @@ class SequentialRecordingsTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -1163,12 +1252,12 @@ class SequentialRecordingsTableSimultaneousRecordings(DynamicTableRegion): } }, ) - table: Optional[SimultaneousRecordingsTable] = Field( - None, + table: SimultaneousRecordingsTable = Field( + ..., description="""Reference to the SimultaneousRecordingsTable table that this table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here.""", ) - description: Optional[str] = Field( - None, description="""Description of what this table region points to.""" + description: str = Field( + ..., description="""Description of what this table region points to.""" ) value: Optional[ Union[ @@ -1211,13 +1300,11 @@ class RepetitionsTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -1244,12 +1331,12 @@ class RepetitionsTableSequentialRecordings(DynamicTableRegion): } }, ) - table: Optional[SequentialRecordingsTable] = Field( - None, + table: SequentialRecordingsTable = Field( + ..., description="""Reference to the SequentialRecordingsTable table that this table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here.""", ) - description: Optional[str] = Field( - None, description="""Description of what this table region points to.""" + description: str = Field( + ..., description="""Description of what this table region points to.""" ) value: Optional[ Union[ @@ -1294,13 +1381,11 @@ class ExperimentalConditionsTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -1324,12 +1409,12 @@ class ExperimentalConditionsTableRepetitions(DynamicTableRegion): "linkml_meta": {"equals_string": "repetitions", "ifabsent": "string(repetitions)"} }, ) - table: Optional[RepetitionsTable] = Field( - None, + table: RepetitionsTable = Field( + ..., description="""Reference to the RepetitionsTable table that this table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here.""", ) - description: Optional[str] = Field( - None, description="""Description of what this table region points to.""" + description: str = Field( + ..., description="""Description of what this table region points to.""" ) value: Optional[ Union[ diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_image.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_image.py index 91baa83..d92729b 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_image.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_image.py @@ -175,10 +175,15 @@ class ImageSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -220,8 +225,8 @@ class ImageSeriesExternalFile(ConfiguredBaseModel): "linkml_meta": {"equals_string": "external_file", "ifabsent": "string(external_file)"} }, ) - starting_frame: Optional[int] = Field( - None, + starting_frame: List[int] = Field( + ..., description="""Each external image may contain one or more consecutive frames of the full ImageSeries. This attribute serves as an index to indicate which frames each file contains, to faciliate random access. The 'starting_frame' attribute, hence, contains a list of frame numbers within the full ImageSeries of the first frame of each file listed in the parent 'external_file' dataset. Zero-based indexing is used (hence, the first element will always be zero). For example, if the 'external_file' dataset has three paths to files and the first file has 5 frames, the second file has 10 frames, and the third file has 20 frames, then this attribute will have values [0, 5, 15]. If there is a single external file that holds all of the frames of the ImageSeries (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0].""", ) value: Optional[NDArray[Shape["* num_files"], str]] = Field( @@ -276,10 +281,15 @@ class ImageMaskSeries(ImageSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -356,10 +366,15 @@ class OpticalSeries(ImageSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -421,10 +436,15 @@ class IndexSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_misc.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_misc.py index 2ac3d3f..8a8baaf 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_misc.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_misc.py @@ -120,10 +120,15 @@ class AbstractFeatureSeries(TimeSeries): description="""Description of the features represented in TimeSeries::data.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_features"}]}}}, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -164,8 +169,9 @@ class AbstractFeatureSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) unit: Optional[str] = Field( - None, + "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'\".""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(see 'feature_units')"}}, ) value: Optional[ Union[ @@ -190,10 +196,15 @@ class AnnotationSeries(TimeSeries): description="""Annotations made during an experiment.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -237,10 +248,15 @@ class IntervalSeries(TimeSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -308,10 +324,15 @@ class DecompositionSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -351,9 +372,10 @@ class DecompositionSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: str = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no unit)"}}, ) value: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float]] = Field( None, @@ -415,13 +437,11 @@ class DecompositionSeriesBands(DynamicTable): description="""The standard deviation of Gaussian filters, in Hz.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_bands"}]}}}, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -555,13 +575,11 @@ class Units(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -589,9 +607,7 @@ class UnitsSpikeTimes(VectorData): None, description="""The smallest possible difference between two spike times. Usually 1 divided by the acquisition sampling rate from which spike times were extracted, but could be larger if the acquisition time series was downsampled or smaller if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be between samples.""", ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_ogen.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_ogen.py index 9ffaa75..0cfb470 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_ogen.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_ogen.py @@ -91,10 +91,15 @@ class OptogeneticSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_ophys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_ophys.py index 01c7c0d..a07c17a 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_ophys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_ophys.py @@ -162,10 +162,15 @@ class TwoPhotonSeries(ImageSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -219,10 +224,15 @@ class RoiResponseSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -356,13 +366,11 @@ class PlaneSegmentation(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -386,9 +394,7 @@ class PlaneSegmentationImageMask(VectorData): "linkml_meta": {"equals_string": "image_mask", "ifabsent": "string(image_mask)"} }, ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -415,9 +421,7 @@ class PlaneSegmentationPixelMask(VectorData): x: Optional[int] = Field(None, description="""Pixel x-coordinate.""") y: Optional[int] = Field(None, description="""Pixel y-coordinate.""") weight: Optional[float] = Field(None, description="""Weight of the pixel.""") - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -445,9 +449,7 @@ class PlaneSegmentationVoxelMask(VectorData): y: Optional[int] = Field(None, description="""Voxel y-coordinate.""") z: Optional[int] = Field(None, description="""Voxel z-coordinate.""") weight: Optional[float] = Field(None, description="""Weight of the voxel.""") - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -523,12 +525,14 @@ class ImagingPlaneManifold(ConfiguredBaseModel): }, ) conversion: Optional[float] = Field( - None, + 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 pixels from x = -500 to 499, y = -500 to 499 that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get from raw data acquisition pixel units to meters is 2/1000.""", + json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}}, ) unit: Optional[str] = Field( - None, + "meters", description="""Base unit of measurement for working with the data. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[ Union[ @@ -551,8 +555,10 @@ class ImagingPlaneOriginCoords(ConfiguredBaseModel): "linkml_meta": {"equals_string": "origin_coords", "ifabsent": "string(origin_coords)"} }, ) - unit: Optional[str] = Field( - None, description="""Measurement units for origin_coords. The default value is 'meters'.""" + unit: str = Field( + "meters", + description="""Measurement units for origin_coords. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[Union[NDArray[Shape["2 x_y"], float], NDArray[Shape["3 x_y_z"], float]]] = ( Field(None) @@ -572,8 +578,10 @@ class ImagingPlaneGridSpacing(ConfiguredBaseModel): "linkml_meta": {"equals_string": "grid_spacing", "ifabsent": "string(grid_spacing)"} }, ) - unit: Optional[str] = Field( - None, description="""Measurement units for grid_spacing. The default value is 'meters'.""" + unit: str = Field( + "meters", + description="""Measurement units for grid_spacing. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[Union[NDArray[Shape["2 x_y"], float], NDArray[Shape["3 x_y_z"], float]]] = ( Field(None) diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_retinotopy.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_retinotopy.py index 50bbf36..7a3b066 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_retinotopy.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_5_0/core_nwb_retinotopy.py @@ -127,14 +127,12 @@ class ImagingRetinotopyAxis1PhaseMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -159,14 +157,12 @@ class ImagingRetinotopyAxis1PowerMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -191,14 +187,12 @@ class ImagingRetinotopyAxis2PhaseMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -223,14 +217,12 @@ class ImagingRetinotopyAxis2PowerMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -255,19 +247,17 @@ class ImagingRetinotopyFocalDepthImage(ConfiguredBaseModel): } }, ) - bits_per_pixel: Optional[int] = Field( - None, + bits_per_pixel: int = Field( + ..., description="""Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value.""", ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - focal_depth: Optional[float] = Field(None, description="""Focal depth offset, in meters.""") - format: Optional[str] = Field( - None, description="""Format of image. Right now only 'raw' is supported.""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + focal_depth: float = Field(..., description="""Focal depth offset, in meters.""") + format: str = Field(..., description="""Format of image. Right now only 'raw' is supported.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], int]] = Field( None, json_schema_extra={ @@ -289,11 +279,11 @@ class ImagingRetinotopySignMap(ConfiguredBaseModel): "linkml_meta": {"equals_string": "sign_map", "ifabsent": "string(sign_map)"} }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -318,18 +308,16 @@ class ImagingRetinotopyVasculatureImage(ConfiguredBaseModel): } }, ) - bits_per_pixel: Optional[int] = Field( - None, + bits_per_pixel: int = Field( + ..., description="""Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value""", ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - format: Optional[str] = Field( - None, description="""Format of image. Right now only 'raw' is supported.""" - ) + 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.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], int]] = Field( None, json_schema_extra={ diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_base.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_base.py index 8a9ce62..08f2b79 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_base.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_base.py @@ -123,9 +123,7 @@ class TimeSeriesReferenceVectorData(VectorData): description="""Number of data samples available in this time series, during this epoch""", ) timeseries: TimeSeries = Field(..., description="""The TimeSeries that this index applies to""") - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -214,10 +212,15 @@ class TimeSeries(NWBDataInterface): ) name: str = Field(...) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) data: TimeSeriesData = Field( ..., @@ -262,19 +265,21 @@ class TimeSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) conversion: Optional[float] = Field( - None, + 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)"}}, ) offset: Optional[float] = Field( None, description="""Scalar to add to the data after scaling by 'conversion' to finalize its coercion to the specified 'unit'. Two common examples of this include (a) data stored in an unsigned type that requires a shift after scaling to re-center the data, and (b) specialized recording devices that naturally cause a scalar offset with respect to the true units.""", ) resolution: Optional[float] = Field( - None, + -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( - None, + 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' and add 'offset'.""", ) continuity: Optional[str] = Field( @@ -304,9 +309,13 @@ class TimeSeriesStartingTime(ConfiguredBaseModel): "linkml_meta": {"equals_string": "starting_time", "ifabsent": "string(starting_time)"} }, ) - rate: Optional[float] = Field(None, description="""Sampling rate, in Hz.""") - unit: Optional[str] = Field( - None, description="""Unit of measurement for time, which is fixed to 'seconds'.""" + rate: float = Field(..., description="""Sampling rate, in Hz.""") + unit: Literal["seconds"] = Field( + "seconds", + description="""Unit of measurement for time, which is fixed to 'seconds'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "seconds", "ifabsent": "string(seconds)"} + }, ) value: float = Field(...) @@ -352,9 +361,7 @@ class Images(NWBDataInterface): ) name: str = Field("Images", json_schema_extra={"linkml_meta": {"ifabsent": "string(Images)"}}) - description: Optional[str] = Field( - None, 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.""") order_of_images: Named[Optional[ImageReferences]] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_behavior.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_behavior.py index e4310c8..08d5d2b 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_behavior.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_behavior.py @@ -84,10 +84,15 @@ class SpatialSeries(TimeSeries): reference_frame: Optional[str] = Field( None, description="""Description defining what exactly 'straight-ahead' means.""" ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -128,8 +133,9 @@ class SpatialSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) unit: Optional[str] = Field( - None, + "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' and add 'offset'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[ Union[ diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_ecephys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_ecephys.py index 65b1d87..a3371dd 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_ecephys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_ecephys.py @@ -134,10 +134,15 @@ class ElectricalSeries(TimeSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -206,10 +211,15 @@ class SpikeEventSeries(ElectricalSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -377,9 +387,9 @@ class ElectrodeGroup(NWBContainer): ) name: str = Field(...) - description: Optional[str] = Field(None, description="""Description of this electrode group.""") - location: Optional[str] = Field( - None, + description: str = Field(..., description="""Description of this electrode group.""") + location: str = Field( + ..., description="""Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible.""", ) position: Optional[ElectrodeGroupPosition] = Field( diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_epoch.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_epoch.py index 4adcf8b..0ec3f6b 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_epoch.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_epoch.py @@ -159,13 +159,11 @@ class TimeIntervals(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_file.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_file.py index e1521bd..be8be33 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_file.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_file.py @@ -105,9 +105,7 @@ class ScratchData(NWBData): ) name: str = Field(...) - notes: Optional[str] = Field( - None, description="""Any notes the user has about the dataset being stored""" - ) + notes: str = Field(..., description="""Any notes the user has about the dataset being stored""") class NWBFile(NWBContainer): @@ -123,9 +121,10 @@ class NWBFile(NWBContainer): "root", json_schema_extra={"linkml_meta": {"equals_string": "root", "ifabsent": "string(root)"}}, ) - nwb_version: Optional[str] = Field( - None, + nwb_version: Literal["2.6.0"] = Field( + "2.6.0", description="""File version string. Use semantic versioning, e.g. 1.2.1. This will be the name of the format with trailing major, minor and patch numbers.""", + json_schema_extra={"linkml_meta": {"equals_string": "2.6.0", "ifabsent": "string(2.6.0)"}}, ) file_create_date: NDArray[Shape["* num_modifications"], datetime] = Field( ..., @@ -332,7 +331,7 @@ class GeneralSourceScript(ConfiguredBaseModel): "linkml_meta": {"equals_string": "source_script", "ifabsent": "string(source_script)"} }, ) - file_name: Optional[str] = Field(None, description="""Name of script file.""") + file_name: str = Field(..., description="""Name of script file.""") value: str = Field(...) @@ -475,13 +474,11 @@ class ExtracellularEphysElectrodes(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -630,8 +627,9 @@ class SubjectAge(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "age", "ifabsent": "string(age)"}}, ) reference: Optional[str] = Field( - None, + "birth", description="""Age is with reference to this event. Can be 'birth' or 'gestational'. If reference is omitted, 'birth' is implied.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(birth)"}}, ) value: str = Field(...) diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_icephys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_icephys.py index 9795c3a..ea2c7ec 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_icephys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_icephys.py @@ -114,8 +114,8 @@ class PatchClampSeries(TimeSeries): ) name: str = Field(...) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -134,10 +134,15 @@ class PatchClampSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -177,8 +182,8 @@ class PatchClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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' and add 'offset'.""", ) value: Optional[NDArray[Shape["* num_times"], float]] = Field( @@ -202,8 +207,8 @@ class CurrentClampSeries(PatchClampSeries): capacitance_compensation: Optional[float] = Field( None, description="""Capacitance compensation, in farads.""" ) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -221,10 +226,15 @@ class CurrentClampSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -264,9 +274,10 @@ class CurrentClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: Literal["volts"] = Field( + "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' and add 'offset'.""", + json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}}, ) value: Any = Field(...) @@ -281,9 +292,10 @@ class IZeroClampSeries(CurrentClampSeries): ) name: str = Field(...) - stimulus_description: Optional[str] = Field( - None, + stimulus_description: Literal["N/A"] = Field( + "N/A", description="""An IZeroClampSeries has no stimulus, so this attribute is automatically set to \"N/A\"""", + json_schema_extra={"linkml_meta": {"equals_string": "N/A", "ifabsent": "string(N/A)"}}, ) bias_current: float = Field(..., description="""Bias current, in amps, fixed to 0.0.""") bridge_balance: float = Field(..., description="""Bridge balance, in ohms, fixed to 0.0.""") @@ -307,10 +319,15 @@ class IZeroClampSeries(CurrentClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -350,8 +367,8 @@ class CurrentClampStimulusSeries(PatchClampSeries): name: str = Field(...) data: CurrentClampStimulusSeriesData = Field(..., description="""Stimulus current applied.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -369,10 +386,15 @@ class CurrentClampStimulusSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -412,9 +434,12 @@ class CurrentClampStimulusSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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' and add 'offset'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"} + }, ) value: Any = Field(...) @@ -451,8 +476,8 @@ class VoltageClampSeries(PatchClampSeries): whole_cell_series_resistance_comp: Optional[VoltageClampSeriesWholeCellSeriesResistanceComp] = ( Field(None, description="""Whole cell series resistance compensation, in ohms.""") ) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -470,10 +495,15 @@ class VoltageClampSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -513,9 +543,12 @@ class VoltageClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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' and add 'offset'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"} + }, ) value: Any = Field(...) @@ -536,9 +569,12 @@ class VoltageClampSeriesCapacitanceFast(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for capacitance_fast, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -559,9 +595,12 @@ class VoltageClampSeriesCapacitanceSlow(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for capacitance_fast, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -582,9 +621,10 @@ class VoltageClampSeriesResistanceCompBandwidth(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["hertz"] = Field( + "hertz", description="""Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'.""", + json_schema_extra={"linkml_meta": {"equals_string": "hertz", "ifabsent": "string(hertz)"}}, ) value: float = Field(...) @@ -605,9 +645,12 @@ class VoltageClampSeriesResistanceCompCorrection(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["percent"] = Field( + "percent", description="""Unit of measurement for resistance_comp_correction, which is fixed to 'percent'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "percent", "ifabsent": "string(percent)"} + }, ) value: float = Field(...) @@ -628,9 +671,12 @@ class VoltageClampSeriesResistanceCompPrediction(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["percent"] = Field( + "percent", description="""Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "percent", "ifabsent": "string(percent)"} + }, ) value: float = Field(...) @@ -651,9 +697,12 @@ class VoltageClampSeriesWholeCellCapacitanceComp(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -674,9 +723,10 @@ class VoltageClampSeriesWholeCellSeriesResistanceComp(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["ohms"] = Field( + "ohms", description="""Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.""", + json_schema_extra={"linkml_meta": {"equals_string": "ohms", "ifabsent": "string(ohms)"}}, ) value: float = Field(...) @@ -692,8 +742,8 @@ class VoltageClampStimulusSeries(PatchClampSeries): name: str = Field(...) data: VoltageClampStimulusSeriesData = Field(..., description="""Stimulus voltage applied.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -711,10 +761,15 @@ class VoltageClampStimulusSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -754,9 +809,10 @@ class VoltageClampStimulusSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: Literal["volts"] = Field( + "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' and add 'offset'.""", + json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}}, ) value: Any = Field(...) @@ -833,13 +889,11 @@ class SweepTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -860,14 +914,21 @@ class IntracellularElectrodesTable(DynamicTable): ) name: str = Field(...) - description: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" + description: Literal["Table for storing intracellular electrode related metadata."] = Field( + "Table for storing intracellular electrode related metadata.", + description="""Description of what is in this dynamic table.""", + json_schema_extra={ + "linkml_meta": { + "equals_string": "Table for storing intracellular electrode related metadata.", + "ifabsent": "string(Table for storing intracellular electrode related metadata.)", + } + }, ) electrode: List[IntracellularElectrode] = Field( ..., description="""Column for storing the reference to the intracellular electrode.""" ) - colnames: Optional[str] = Field( - None, + colnames: List[str] = Field( + ..., description="""The names of the columns in this table. This should be used to specify an order to the columns.""", ) id: NDArray[Shape["* num_rows"], int] = Field( @@ -890,8 +951,15 @@ class IntracellularStimuliTable(DynamicTable): ) name: str = Field(...) - description: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" + description: Literal["Table for storing intracellular stimulus related metadata."] = Field( + "Table for storing intracellular stimulus related metadata.", + description="""Description of what is in this dynamic table.""", + json_schema_extra={ + "linkml_meta": { + "equals_string": "Table for storing intracellular stimulus related metadata.", + "ifabsent": "string(Table for storing intracellular stimulus related metadata.)", + } + }, ) stimulus: Named[TimeSeriesReferenceVectorData] = Field( ..., @@ -905,8 +973,8 @@ class IntracellularStimuliTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + colnames: List[str] = Field( + ..., description="""The names of the columns in this table. This should be used to specify an order to the columns.""", ) id: NDArray[Shape["* num_rows"], int] = Field( @@ -929,8 +997,15 @@ class IntracellularResponsesTable(DynamicTable): ) name: str = Field(...) - description: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" + description: Literal["Table for storing intracellular response related metadata."] = Field( + "Table for storing intracellular response related metadata.", + description="""Description of what is in this dynamic table.""", + json_schema_extra={ + "linkml_meta": { + "equals_string": "Table for storing intracellular response related metadata.", + "ifabsent": "string(Table for storing intracellular response related metadata.)", + } + }, ) response: Named[TimeSeriesReferenceVectorData] = Field( ..., @@ -944,8 +1019,8 @@ class IntracellularResponsesTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + colnames: List[str] = Field( + ..., description="""The names of the columns in this table. This should be used to specify an order to the columns.""", ) id: NDArray[Shape["* num_rows"], int] = Field( @@ -976,9 +1051,27 @@ class IntracellularRecordingsTable(AlignedDynamicTable): } }, ) - description: Optional[str] = Field( - None, + description: Literal[ + "A table to group together a stimulus and response from a single electrode and a single" + " simultaneous recording and for storing metadata about the intracellular recording." + ] = Field( + "A table to group together a stimulus and response from a single electrode and a single" + " simultaneous recording and for storing metadata about the intracellular recording.", description="""Description of the contents of this table. Inherited from AlignedDynamicTable and overwritten here to fix the value of the attribute.""", + json_schema_extra={ + "linkml_meta": { + "equals_string": ( + "A table to group together a stimulus and response from a " + "single electrode and a single simultaneous recording and " + "for storing metadata about the intracellular recording." + ), + "ifabsent": ( + "string(A table to group together a stimulus and response from a " + "single electrode and a single simultaneous recording and for " + "storing metadata about the intracellular recording.)" + ), + } + }, ) electrodes: IntracellularElectrodesTable = Field( ..., description="""Table for storing intracellular electrode related metadata.""" @@ -992,8 +1085,8 @@ class IntracellularRecordingsTable(AlignedDynamicTable): value: Optional[List[DynamicTable]] = Field( None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "DynamicTable"}]}} ) - colnames: Optional[str] = Field( - None, + colnames: List[str] = Field( + ..., description="""The names of the columns in this table. This should be used to specify an order to the columns.""", ) id: NDArray[Shape["* num_rows"], int] = Field( @@ -1040,13 +1133,11 @@ class SimultaneousRecordingsTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -1070,12 +1161,12 @@ class SimultaneousRecordingsTableRecordings(DynamicTableRegion): "linkml_meta": {"equals_string": "recordings", "ifabsent": "string(recordings)"} }, ) - table: Optional[IntracellularRecordingsTable] = Field( - None, + table: IntracellularRecordingsTable = Field( + ..., description="""Reference to the IntracellularRecordingsTable table that this table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here.""", ) - description: Optional[str] = Field( - None, description="""Description of what this table region points to.""" + description: str = Field( + ..., description="""Description of what this table region points to.""" ) value: Optional[ Union[ @@ -1130,13 +1221,11 @@ class SequentialRecordingsTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -1163,12 +1252,12 @@ class SequentialRecordingsTableSimultaneousRecordings(DynamicTableRegion): } }, ) - table: Optional[SimultaneousRecordingsTable] = Field( - None, + table: SimultaneousRecordingsTable = Field( + ..., description="""Reference to the SimultaneousRecordingsTable table that this table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here.""", ) - description: Optional[str] = Field( - None, description="""Description of what this table region points to.""" + description: str = Field( + ..., description="""Description of what this table region points to.""" ) value: Optional[ Union[ @@ -1211,13 +1300,11 @@ class RepetitionsTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -1244,12 +1331,12 @@ class RepetitionsTableSequentialRecordings(DynamicTableRegion): } }, ) - table: Optional[SequentialRecordingsTable] = Field( - None, + table: SequentialRecordingsTable = Field( + ..., description="""Reference to the SequentialRecordingsTable table that this table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here.""", ) - description: Optional[str] = Field( - None, description="""Description of what this table region points to.""" + description: str = Field( + ..., description="""Description of what this table region points to.""" ) value: Optional[ Union[ @@ -1294,13 +1381,11 @@ class ExperimentalConditionsTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -1324,12 +1409,12 @@ class ExperimentalConditionsTableRepetitions(DynamicTableRegion): "linkml_meta": {"equals_string": "repetitions", "ifabsent": "string(repetitions)"} }, ) - table: Optional[RepetitionsTable] = Field( - None, + table: RepetitionsTable = Field( + ..., description="""Reference to the RepetitionsTable table that this table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here.""", ) - description: Optional[str] = Field( - None, description="""Description of what this table region points to.""" + description: str = Field( + ..., description="""Description of what this table region points to.""" ) value: Optional[ Union[ diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_image.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_image.py index dd490ec..07a02dc 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_image.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_image.py @@ -175,10 +175,15 @@ class ImageSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -220,8 +225,8 @@ class ImageSeriesExternalFile(ConfiguredBaseModel): "linkml_meta": {"equals_string": "external_file", "ifabsent": "string(external_file)"} }, ) - starting_frame: Optional[int] = Field( - None, + starting_frame: List[int] = Field( + ..., description="""Each external image may contain one or more consecutive frames of the full ImageSeries. This attribute serves as an index to indicate which frames each file contains, to faciliate random access. The 'starting_frame' attribute, hence, contains a list of frame numbers within the full ImageSeries of the first frame of each file listed in the parent 'external_file' dataset. Zero-based indexing is used (hence, the first element will always be zero). For example, if the 'external_file' dataset has three paths to files and the first file has 5 frames, the second file has 10 frames, and the third file has 20 frames, then this attribute will have values [0, 5, 15]. If there is a single external file that holds all of the frames of the ImageSeries (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0].""", ) value: Optional[NDArray[Shape["* num_files"], str]] = Field( @@ -276,10 +281,15 @@ class ImageMaskSeries(ImageSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -356,10 +366,15 @@ class OpticalSeries(ImageSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -421,10 +436,15 @@ class IndexSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_misc.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_misc.py index 2235224..a8b3e9a 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_misc.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_misc.py @@ -120,10 +120,15 @@ class AbstractFeatureSeries(TimeSeries): description="""Description of the features represented in TimeSeries::data.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_features"}]}}}, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -164,8 +169,9 @@ class AbstractFeatureSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) unit: Optional[str] = Field( - None, + "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'\".""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(see 'feature_units')"}}, ) value: Optional[ Union[ @@ -190,10 +196,15 @@ class AnnotationSeries(TimeSeries): description="""Annotations made during an experiment.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -237,10 +248,15 @@ class IntervalSeries(TimeSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -308,10 +324,15 @@ class DecompositionSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -351,9 +372,10 @@ class DecompositionSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: str = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no unit)"}}, ) value: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float]] = Field( None, @@ -415,13 +437,11 @@ class DecompositionSeriesBands(DynamicTable): description="""The standard deviation of Gaussian filters, in Hz.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_bands"}]}}}, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -555,13 +575,11 @@ class Units(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -589,9 +607,7 @@ class UnitsSpikeTimes(VectorData): None, description="""The smallest possible difference between two spike times. Usually 1 divided by the acquisition sampling rate from which spike times were extracted, but could be larger if the acquisition time series was downsampled or smaller if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be between samples.""", ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_ogen.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_ogen.py index b4db178..66baef6 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_ogen.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_ogen.py @@ -91,10 +91,15 @@ class OptogeneticSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_ophys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_ophys.py index 9e6c34a..22d467f 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_ophys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_ophys.py @@ -167,10 +167,15 @@ class OnePhotonSeries(ImageSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -256,10 +261,15 @@ class TwoPhotonSeries(ImageSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -313,10 +323,15 @@ class RoiResponseSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -450,13 +465,11 @@ class PlaneSegmentation(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -480,9 +493,7 @@ class PlaneSegmentationImageMask(VectorData): "linkml_meta": {"equals_string": "image_mask", "ifabsent": "string(image_mask)"} }, ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -509,9 +520,7 @@ class PlaneSegmentationPixelMask(VectorData): x: Optional[int] = Field(None, description="""Pixel x-coordinate.""") y: Optional[int] = Field(None, description="""Pixel y-coordinate.""") weight: Optional[float] = Field(None, description="""Weight of the pixel.""") - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -539,9 +548,7 @@ class PlaneSegmentationVoxelMask(VectorData): y: Optional[int] = Field(None, description="""Voxel y-coordinate.""") z: Optional[int] = Field(None, description="""Voxel z-coordinate.""") weight: Optional[float] = Field(None, description="""Weight of the voxel.""") - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -617,12 +624,14 @@ class ImagingPlaneManifold(ConfiguredBaseModel): }, ) conversion: Optional[float] = Field( - None, + 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 pixels from x = -500 to 499, y = -500 to 499 that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get from raw data acquisition pixel units to meters is 2/1000.""", + json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}}, ) unit: Optional[str] = Field( - None, + "meters", description="""Base unit of measurement for working with the data. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[ Union[ @@ -645,8 +654,10 @@ class ImagingPlaneOriginCoords(ConfiguredBaseModel): "linkml_meta": {"equals_string": "origin_coords", "ifabsent": "string(origin_coords)"} }, ) - unit: Optional[str] = Field( - None, description="""Measurement units for origin_coords. The default value is 'meters'.""" + unit: str = Field( + "meters", + description="""Measurement units for origin_coords. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[Union[NDArray[Shape["2 x_y"], float], NDArray[Shape["3 x_y_z"], float]]] = ( Field(None) @@ -666,8 +677,10 @@ class ImagingPlaneGridSpacing(ConfiguredBaseModel): "linkml_meta": {"equals_string": "grid_spacing", "ifabsent": "string(grid_spacing)"} }, ) - unit: Optional[str] = Field( - None, description="""Measurement units for grid_spacing. The default value is 'meters'.""" + unit: str = Field( + "meters", + description="""Measurement units for grid_spacing. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[Union[NDArray[Shape["2 x_y"], float], NDArray[Shape["3 x_y_z"], float]]] = ( Field(None) diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_retinotopy.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_retinotopy.py index 9dd7994..75922c5 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_retinotopy.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_6_0_alpha/core_nwb_retinotopy.py @@ -127,14 +127,12 @@ class ImagingRetinotopyAxis1PhaseMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -159,14 +157,12 @@ class ImagingRetinotopyAxis1PowerMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -191,14 +187,12 @@ class ImagingRetinotopyAxis2PhaseMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -223,14 +217,12 @@ class ImagingRetinotopyAxis2PowerMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -255,19 +247,17 @@ class ImagingRetinotopyFocalDepthImage(ConfiguredBaseModel): } }, ) - bits_per_pixel: Optional[int] = Field( - None, + bits_per_pixel: int = Field( + ..., description="""Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value.""", ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - focal_depth: Optional[float] = Field(None, description="""Focal depth offset, in meters.""") - format: Optional[str] = Field( - None, description="""Format of image. Right now only 'raw' is supported.""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + focal_depth: float = Field(..., description="""Focal depth offset, in meters.""") + format: str = Field(..., description="""Format of image. Right now only 'raw' is supported.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], int]] = Field( None, json_schema_extra={ @@ -289,11 +279,11 @@ class ImagingRetinotopySignMap(ConfiguredBaseModel): "linkml_meta": {"equals_string": "sign_map", "ifabsent": "string(sign_map)"} }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -318,18 +308,16 @@ class ImagingRetinotopyVasculatureImage(ConfiguredBaseModel): } }, ) - bits_per_pixel: Optional[int] = Field( - None, + bits_per_pixel: int = Field( + ..., description="""Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value""", ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - format: Optional[str] = Field( - None, description="""Format of image. Right now only 'raw' is supported.""" - ) + 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.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], int]] = Field( None, json_schema_extra={ diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_base.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_base.py index 38c4e21..1e2d4a5 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_base.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_base.py @@ -123,9 +123,7 @@ class TimeSeriesReferenceVectorData(VectorData): description="""Number of data samples available in this time series, during this epoch""", ) timeseries: TimeSeries = Field(..., description="""The TimeSeries that this index applies to""") - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -214,10 +212,15 @@ class TimeSeries(NWBDataInterface): ) name: str = Field(...) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) data: TimeSeriesData = Field( ..., @@ -262,19 +265,21 @@ class TimeSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) conversion: Optional[float] = Field( - None, + 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)"}}, ) offset: Optional[float] = Field( None, description="""Scalar to add to the data after scaling by 'conversion' to finalize its coercion to the specified 'unit'. Two common examples of this include (a) data stored in an unsigned type that requires a shift after scaling to re-center the data, and (b) specialized recording devices that naturally cause a scalar offset with respect to the true units.""", ) resolution: Optional[float] = Field( - None, + -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( - None, + 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' and add 'offset'.""", ) continuity: Optional[str] = Field( @@ -304,9 +309,13 @@ class TimeSeriesStartingTime(ConfiguredBaseModel): "linkml_meta": {"equals_string": "starting_time", "ifabsent": "string(starting_time)"} }, ) - rate: Optional[float] = Field(None, description="""Sampling rate, in Hz.""") - unit: Optional[str] = Field( - None, description="""Unit of measurement for time, which is fixed to 'seconds'.""" + rate: float = Field(..., description="""Sampling rate, in Hz.""") + unit: Literal["seconds"] = Field( + "seconds", + description="""Unit of measurement for time, which is fixed to 'seconds'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "seconds", "ifabsent": "string(seconds)"} + }, ) value: float = Field(...) @@ -352,9 +361,7 @@ class Images(NWBDataInterface): ) name: str = Field("Images", json_schema_extra={"linkml_meta": {"ifabsent": "string(Images)"}}) - description: Optional[str] = Field( - None, 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.""") order_of_images: Named[Optional[ImageReferences]] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_behavior.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_behavior.py index f1ea1a0..e8c8a80 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_behavior.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_behavior.py @@ -84,10 +84,15 @@ class SpatialSeries(TimeSeries): reference_frame: Optional[str] = Field( None, description="""Description defining what exactly 'straight-ahead' means.""" ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -128,8 +133,9 @@ class SpatialSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) unit: Optional[str] = Field( - None, + "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' and add 'offset'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[ Union[ diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_ecephys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_ecephys.py index 2a92c91..f772257 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_ecephys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_ecephys.py @@ -134,10 +134,15 @@ class ElectricalSeries(TimeSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -206,10 +211,15 @@ class SpikeEventSeries(ElectricalSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -377,9 +387,9 @@ class ElectrodeGroup(NWBContainer): ) name: str = Field(...) - description: Optional[str] = Field(None, description="""Description of this electrode group.""") - location: Optional[str] = Field( - None, + description: str = Field(..., description="""Description of this electrode group.""") + location: str = Field( + ..., description="""Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible.""", ) position: Optional[ElectrodeGroupPosition] = Field( diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_epoch.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_epoch.py index 44cc59e..0eb0390 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_epoch.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_epoch.py @@ -159,13 +159,11 @@ class TimeIntervals(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_file.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_file.py index 5d2c034..ef1a1e6 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_file.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_file.py @@ -105,9 +105,7 @@ class ScratchData(NWBData): ) name: str = Field(...) - notes: Optional[str] = Field( - None, description="""Any notes the user has about the dataset being stored""" - ) + notes: str = Field(..., description="""Any notes the user has about the dataset being stored""") class NWBFile(NWBContainer): @@ -123,9 +121,10 @@ class NWBFile(NWBContainer): "root", json_schema_extra={"linkml_meta": {"equals_string": "root", "ifabsent": "string(root)"}}, ) - nwb_version: Optional[str] = Field( - None, + nwb_version: Literal["2.7.0"] = Field( + "2.7.0", description="""File version string. Use semantic versioning, e.g. 1.2.1. This will be the name of the format with trailing major, minor and patch numbers.""", + json_schema_extra={"linkml_meta": {"equals_string": "2.7.0", "ifabsent": "string(2.7.0)"}}, ) file_create_date: NDArray[Shape["* num_modifications"], datetime] = Field( ..., @@ -340,7 +339,7 @@ class GeneralSourceScript(ConfiguredBaseModel): "linkml_meta": {"equals_string": "source_script", "ifabsent": "string(source_script)"} }, ) - file_name: Optional[str] = Field(None, description="""Name of script file.""") + file_name: str = Field(..., description="""Name of script file.""") value: str = Field(...) @@ -483,13 +482,11 @@ class ExtracellularEphysElectrodes(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -638,8 +635,9 @@ class SubjectAge(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "age", "ifabsent": "string(age)"}}, ) reference: Optional[str] = Field( - None, + "birth", description="""Age is with reference to this event. Can be 'birth' or 'gestational'. If reference is omitted, 'birth' is implied.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(birth)"}}, ) value: str = Field(...) diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_icephys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_icephys.py index 23a0ff2..577ddb8 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_icephys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_icephys.py @@ -114,8 +114,8 @@ class PatchClampSeries(TimeSeries): ) name: str = Field(...) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -134,10 +134,15 @@ class PatchClampSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -177,8 +182,8 @@ class PatchClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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' and add 'offset'.""", ) value: Optional[NDArray[Shape["* num_times"], float]] = Field( @@ -202,8 +207,8 @@ class CurrentClampSeries(PatchClampSeries): capacitance_compensation: Optional[float] = Field( None, description="""Capacitance compensation, in farads.""" ) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -221,10 +226,15 @@ class CurrentClampSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -264,9 +274,10 @@ class CurrentClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: Literal["volts"] = Field( + "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' and add 'offset'.""", + json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}}, ) value: Any = Field(...) @@ -281,9 +292,10 @@ class IZeroClampSeries(CurrentClampSeries): ) name: str = Field(...) - stimulus_description: Optional[str] = Field( - None, + stimulus_description: Literal["N/A"] = Field( + "N/A", description="""An IZeroClampSeries has no stimulus, so this attribute is automatically set to \"N/A\"""", + json_schema_extra={"linkml_meta": {"equals_string": "N/A", "ifabsent": "string(N/A)"}}, ) bias_current: float = Field(..., description="""Bias current, in amps, fixed to 0.0.""") bridge_balance: float = Field(..., description="""Bridge balance, in ohms, fixed to 0.0.""") @@ -307,10 +319,15 @@ class IZeroClampSeries(CurrentClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -350,8 +367,8 @@ class CurrentClampStimulusSeries(PatchClampSeries): name: str = Field(...) data: CurrentClampStimulusSeriesData = Field(..., description="""Stimulus current applied.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -369,10 +386,15 @@ class CurrentClampStimulusSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -412,9 +434,12 @@ class CurrentClampStimulusSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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' and add 'offset'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"} + }, ) value: Any = Field(...) @@ -451,8 +476,8 @@ class VoltageClampSeries(PatchClampSeries): whole_cell_series_resistance_comp: Optional[VoltageClampSeriesWholeCellSeriesResistanceComp] = ( Field(None, description="""Whole cell series resistance compensation, in ohms.""") ) - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -470,10 +495,15 @@ class VoltageClampSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -513,9 +543,12 @@ class VoltageClampSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + 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' and add 'offset'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "amperes", "ifabsent": "string(amperes)"} + }, ) value: Any = Field(...) @@ -536,9 +569,12 @@ class VoltageClampSeriesCapacitanceFast(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for capacitance_fast, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -559,9 +595,12 @@ class VoltageClampSeriesCapacitanceSlow(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for capacitance_fast, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -582,9 +621,10 @@ class VoltageClampSeriesResistanceCompBandwidth(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["hertz"] = Field( + "hertz", description="""Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'.""", + json_schema_extra={"linkml_meta": {"equals_string": "hertz", "ifabsent": "string(hertz)"}}, ) value: float = Field(...) @@ -605,9 +645,12 @@ class VoltageClampSeriesResistanceCompCorrection(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["percent"] = Field( + "percent", description="""Unit of measurement for resistance_comp_correction, which is fixed to 'percent'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "percent", "ifabsent": "string(percent)"} + }, ) value: float = Field(...) @@ -628,9 +671,12 @@ class VoltageClampSeriesResistanceCompPrediction(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["percent"] = Field( + "percent", description="""Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "percent", "ifabsent": "string(percent)"} + }, ) value: float = Field(...) @@ -651,9 +697,12 @@ class VoltageClampSeriesWholeCellCapacitanceComp(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["farads"] = Field( + "farads", description="""Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'.""", + json_schema_extra={ + "linkml_meta": {"equals_string": "farads", "ifabsent": "string(farads)"} + }, ) value: float = Field(...) @@ -674,9 +723,10 @@ class VoltageClampSeriesWholeCellSeriesResistanceComp(ConfiguredBaseModel): } }, ) - unit: Optional[str] = Field( - None, + unit: Literal["ohms"] = Field( + "ohms", description="""Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.""", + json_schema_extra={"linkml_meta": {"equals_string": "ohms", "ifabsent": "string(ohms)"}}, ) value: float = Field(...) @@ -692,8 +742,8 @@ class VoltageClampStimulusSeries(PatchClampSeries): name: str = Field(...) data: VoltageClampStimulusSeriesData = Field(..., description="""Stimulus voltage applied.""") - stimulus_description: Optional[str] = Field( - None, description="""Protocol/stimulus name for this patch-clamp dataset.""" + stimulus_description: str = Field( + ..., description="""Protocol/stimulus name for this patch-clamp dataset.""" ) sweep_number: Optional[int] = Field( None, description="""Sweep number, allows to group different PatchClampSeries together.""" @@ -711,10 +761,15 @@ class VoltageClampStimulusSeries(PatchClampSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -754,9 +809,10 @@ class VoltageClampStimulusSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: Literal["volts"] = Field( + "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' and add 'offset'.""", + json_schema_extra={"linkml_meta": {"equals_string": "volts", "ifabsent": "string(volts)"}}, ) value: Any = Field(...) @@ -833,13 +889,11 @@ class SweepTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -860,14 +914,21 @@ class IntracellularElectrodesTable(DynamicTable): ) name: str = Field(...) - description: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" + description: Literal["Table for storing intracellular electrode related metadata."] = Field( + "Table for storing intracellular electrode related metadata.", + description="""Description of what is in this dynamic table.""", + json_schema_extra={ + "linkml_meta": { + "equals_string": "Table for storing intracellular electrode related metadata.", + "ifabsent": "string(Table for storing intracellular electrode related metadata.)", + } + }, ) electrode: List[IntracellularElectrode] = Field( ..., description="""Column for storing the reference to the intracellular electrode.""" ) - colnames: Optional[str] = Field( - None, + colnames: List[str] = Field( + ..., description="""The names of the columns in this table. This should be used to specify an order to the columns.""", ) id: NDArray[Shape["* num_rows"], int] = Field( @@ -890,8 +951,15 @@ class IntracellularStimuliTable(DynamicTable): ) name: str = Field(...) - description: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" + description: Literal["Table for storing intracellular stimulus related metadata."] = Field( + "Table for storing intracellular stimulus related metadata.", + description="""Description of what is in this dynamic table.""", + json_schema_extra={ + "linkml_meta": { + "equals_string": "Table for storing intracellular stimulus related metadata.", + "ifabsent": "string(Table for storing intracellular stimulus related metadata.)", + } + }, ) stimulus: Named[TimeSeriesReferenceVectorData] = Field( ..., @@ -917,8 +985,8 @@ class IntracellularStimuliTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + colnames: List[str] = Field( + ..., description="""The names of the columns in this table. This should be used to specify an order to the columns.""", ) id: NDArray[Shape["* num_rows"], int] = Field( @@ -941,8 +1009,15 @@ class IntracellularResponsesTable(DynamicTable): ) name: str = Field(...) - description: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" + description: Literal["Table for storing intracellular response related metadata."] = Field( + "Table for storing intracellular response related metadata.", + description="""Description of what is in this dynamic table.""", + json_schema_extra={ + "linkml_meta": { + "equals_string": "Table for storing intracellular response related metadata.", + "ifabsent": "string(Table for storing intracellular response related metadata.)", + } + }, ) response: Named[TimeSeriesReferenceVectorData] = Field( ..., @@ -956,8 +1031,8 @@ class IntracellularResponsesTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + colnames: List[str] = Field( + ..., description="""The names of the columns in this table. This should be used to specify an order to the columns.""", ) id: NDArray[Shape["* num_rows"], int] = Field( @@ -988,9 +1063,27 @@ class IntracellularRecordingsTable(AlignedDynamicTable): } }, ) - description: Optional[str] = Field( - None, + description: Literal[ + "A table to group together a stimulus and response from a single electrode and a single" + " simultaneous recording and for storing metadata about the intracellular recording." + ] = Field( + "A table to group together a stimulus and response from a single electrode and a single" + " simultaneous recording and for storing metadata about the intracellular recording.", description="""Description of the contents of this table. Inherited from AlignedDynamicTable and overwritten here to fix the value of the attribute.""", + json_schema_extra={ + "linkml_meta": { + "equals_string": ( + "A table to group together a stimulus and response from a " + "single electrode and a single simultaneous recording and " + "for storing metadata about the intracellular recording." + ), + "ifabsent": ( + "string(A table to group together a stimulus and response from a " + "single electrode and a single simultaneous recording and for " + "storing metadata about the intracellular recording.)" + ), + } + }, ) electrodes: IntracellularElectrodesTable = Field( ..., description="""Table for storing intracellular electrode related metadata.""" @@ -1004,8 +1097,8 @@ class IntracellularRecordingsTable(AlignedDynamicTable): value: Optional[List[DynamicTable]] = Field( None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "DynamicTable"}]}} ) - colnames: Optional[str] = Field( - None, + colnames: List[str] = Field( + ..., description="""The names of the columns in this table. This should be used to specify an order to the columns.""", ) id: NDArray[Shape["* num_rows"], int] = Field( @@ -1052,13 +1145,11 @@ class SimultaneousRecordingsTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -1082,12 +1173,12 @@ class SimultaneousRecordingsTableRecordings(DynamicTableRegion): "linkml_meta": {"equals_string": "recordings", "ifabsent": "string(recordings)"} }, ) - table: Optional[IntracellularRecordingsTable] = Field( - None, + table: IntracellularRecordingsTable = Field( + ..., description="""Reference to the IntracellularRecordingsTable table that this table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here.""", ) - description: Optional[str] = Field( - None, description="""Description of what this table region points to.""" + description: str = Field( + ..., description="""Description of what this table region points to.""" ) value: Optional[ Union[ @@ -1142,13 +1233,11 @@ class SequentialRecordingsTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -1175,12 +1264,12 @@ class SequentialRecordingsTableSimultaneousRecordings(DynamicTableRegion): } }, ) - table: Optional[SimultaneousRecordingsTable] = Field( - None, + table: SimultaneousRecordingsTable = Field( + ..., description="""Reference to the SimultaneousRecordingsTable table that this table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here.""", ) - description: Optional[str] = Field( - None, description="""Description of what this table region points to.""" + description: str = Field( + ..., description="""Description of what this table region points to.""" ) value: Optional[ Union[ @@ -1223,13 +1312,11 @@ class RepetitionsTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -1256,12 +1343,12 @@ class RepetitionsTableSequentialRecordings(DynamicTableRegion): } }, ) - table: Optional[SequentialRecordingsTable] = Field( - None, + table: SequentialRecordingsTable = Field( + ..., description="""Reference to the SequentialRecordingsTable table that this table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here.""", ) - description: Optional[str] = Field( - None, description="""Description of what this table region points to.""" + description: str = Field( + ..., description="""Description of what this table region points to.""" ) value: Optional[ Union[ @@ -1306,13 +1393,11 @@ class ExperimentalConditionsTable(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -1336,12 +1421,12 @@ class ExperimentalConditionsTableRepetitions(DynamicTableRegion): "linkml_meta": {"equals_string": "repetitions", "ifabsent": "string(repetitions)"} }, ) - table: Optional[RepetitionsTable] = Field( - None, + table: RepetitionsTable = Field( + ..., description="""Reference to the RepetitionsTable table that this table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here.""", ) - description: Optional[str] = Field( - None, description="""Description of what this table region points to.""" + description: str = Field( + ..., description="""Description of what this table region points to.""" ) value: Optional[ Union[ diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_image.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_image.py index e43675b..69a8617 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_image.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_image.py @@ -175,10 +175,15 @@ class ImageSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -220,8 +225,8 @@ class ImageSeriesExternalFile(ConfiguredBaseModel): "linkml_meta": {"equals_string": "external_file", "ifabsent": "string(external_file)"} }, ) - starting_frame: Optional[int] = Field( - None, + starting_frame: List[int] = Field( + ..., description="""Each external image may contain one or more consecutive frames of the full ImageSeries. This attribute serves as an index to indicate which frames each file contains, to facilitate random access. The 'starting_frame' attribute, hence, contains a list of frame numbers within the full ImageSeries of the first frame of each file listed in the parent 'external_file' dataset. Zero-based indexing is used (hence, the first element will always be zero). For example, if the 'external_file' dataset has three paths to files and the first file has 5 frames, the second file has 10 frames, and the third file has 20 frames, then this attribute will have values [0, 5, 15]. If there is a single external file that holds all of the frames of the ImageSeries (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0].""", ) value: Optional[NDArray[Shape["* num_files"], str]] = Field( @@ -276,10 +281,15 @@ class ImageMaskSeries(ImageSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -356,10 +366,15 @@ class OpticalSeries(ImageSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -421,10 +436,15 @@ class IndexSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_misc.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_misc.py index c4b1c2e..57697a3 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_misc.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_misc.py @@ -120,10 +120,15 @@ class AbstractFeatureSeries(TimeSeries): description="""Description of the features represented in TimeSeries::data.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_features"}]}}}, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -164,8 +169,9 @@ class AbstractFeatureSeriesData(ConfiguredBaseModel): json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) unit: Optional[str] = Field( - None, + "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'\".""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(see 'feature_units')"}}, ) value: Optional[ Union[ @@ -190,10 +196,15 @@ class AnnotationSeries(TimeSeries): description="""Annotations made during an experiment.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_times"}]}}}, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -237,10 +248,15 @@ class IntervalSeries(TimeSeries): 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(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -308,10 +324,15 @@ class DecompositionSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -351,9 +372,10 @@ class DecompositionSeriesData(ConfiguredBaseModel): "data", json_schema_extra={"linkml_meta": {"equals_string": "data", "ifabsent": "string(data)"}}, ) - unit: Optional[str] = Field( - None, + unit: str = Field( + "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'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no unit)"}}, ) value: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float]] = Field( None, @@ -415,13 +437,11 @@ class DecompositionSeriesBands(DynamicTable): description="""The standard deviation of Gaussian filters, in Hz.""", json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_bands"}]}}}, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -555,13 +575,11 @@ class Units(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -589,9 +607,7 @@ class UnitsSpikeTimes(VectorData): None, description="""The smallest possible difference between two spike times. Usually 1 divided by the acquisition sampling rate from which spike times were extracted, but could be larger if the acquisition time series was downsampled or smaller if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be between samples.""", ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_ogen.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_ogen.py index e575a80..d77dcba 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_ogen.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_ogen.py @@ -92,10 +92,15 @@ class OptogeneticSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_ophys.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_ophys.py index daeed24..d734f11 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_ophys.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_ophys.py @@ -167,10 +167,15 @@ class OnePhotonSeries(ImageSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -256,10 +261,15 @@ class TwoPhotonSeries(ImageSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -313,10 +323,15 @@ class RoiResponseSeries(TimeSeries): } }, ) - description: Optional[str] = Field(None, description="""Description of the time series.""") + description: Optional[str] = Field( + "no description", + description="""Description of the time series.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no description)"}}, + ) comments: Optional[str] = Field( - None, + "no comments", description="""Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(no comments)"}}, ) starting_time: Optional[TimeSeriesStartingTime] = Field( None, @@ -450,13 +465,11 @@ class PlaneSegmentation(DynamicTable): } }, ) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -480,9 +493,7 @@ class PlaneSegmentationImageMask(VectorData): "linkml_meta": {"equals_string": "image_mask", "ifabsent": "string(image_mask)"} }, ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -509,9 +520,7 @@ class PlaneSegmentationPixelMask(VectorData): x: Optional[int] = Field(None, description="""Pixel x-coordinate.""") y: Optional[int] = Field(None, description="""Pixel y-coordinate.""") weight: Optional[float] = Field(None, description="""Weight of the pixel.""") - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -539,9 +548,7 @@ class PlaneSegmentationVoxelMask(VectorData): y: Optional[int] = Field(None, description="""Voxel y-coordinate.""") z: Optional[int] = Field(None, description="""Voxel z-coordinate.""") weight: Optional[float] = Field(None, description="""Weight of the voxel.""") - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -617,12 +624,14 @@ class ImagingPlaneManifold(ConfiguredBaseModel): }, ) conversion: Optional[float] = Field( - None, + 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 pixels from x = -500 to 499, y = -500 to 499 that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get from raw data acquisition pixel units to meters is 2/1000.""", + json_schema_extra={"linkml_meta": {"ifabsent": "float(1.0)"}}, ) unit: Optional[str] = Field( - None, + "meters", description="""Base unit of measurement for working with the data. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[ Union[ @@ -645,8 +654,10 @@ class ImagingPlaneOriginCoords(ConfiguredBaseModel): "linkml_meta": {"equals_string": "origin_coords", "ifabsent": "string(origin_coords)"} }, ) - unit: Optional[str] = Field( - None, description="""Measurement units for origin_coords. The default value is 'meters'.""" + unit: str = Field( + "meters", + description="""Measurement units for origin_coords. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[Union[NDArray[Shape["2 x_y"], float], NDArray[Shape["3 x_y_z"], float]]] = ( Field(None) @@ -666,8 +677,10 @@ class ImagingPlaneGridSpacing(ConfiguredBaseModel): "linkml_meta": {"equals_string": "grid_spacing", "ifabsent": "string(grid_spacing)"} }, ) - unit: Optional[str] = Field( - None, description="""Measurement units for grid_spacing. The default value is 'meters'.""" + unit: str = Field( + "meters", + description="""Measurement units for grid_spacing. The default value is 'meters'.""", + json_schema_extra={"linkml_meta": {"ifabsent": "string(meters)"}}, ) value: Optional[Union[NDArray[Shape["2 x_y"], float], NDArray[Shape["3 x_y_z"], float]]] = ( Field(None) diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_retinotopy.py b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_retinotopy.py index 40c1f40..0942bac 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_retinotopy.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/core/v2_7_0/core_nwb_retinotopy.py @@ -127,14 +127,12 @@ class ImagingRetinotopyAxis1PhaseMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -159,14 +157,12 @@ class ImagingRetinotopyAxis1PowerMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -191,14 +187,12 @@ class ImagingRetinotopyAxis2PhaseMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -223,14 +217,12 @@ class ImagingRetinotopyAxis2PowerMap(ConfiguredBaseModel): } }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - unit: Optional[str] = Field( - None, description="""Unit that axis data is stored in (e.g., degrees).""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + unit: str = Field(..., description="""Unit that axis data is stored in (e.g., degrees).""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -255,19 +247,17 @@ class ImagingRetinotopyFocalDepthImage(ConfiguredBaseModel): } }, ) - bits_per_pixel: Optional[int] = Field( - None, + bits_per_pixel: int = Field( + ..., description="""Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value.""", ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - focal_depth: Optional[float] = Field(None, description="""Focal depth offset, in meters.""") - format: Optional[str] = Field( - None, description="""Format of image. Right now only 'raw' is supported.""" - ) + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") + focal_depth: float = Field(..., description="""Focal depth offset, in meters.""") + format: str = Field(..., description="""Format of image. Right now only 'raw' is supported.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], int]] = Field( None, json_schema_extra={ @@ -289,11 +279,11 @@ class ImagingRetinotopySignMap(ConfiguredBaseModel): "linkml_meta": {"equals_string": "sign_map", "ifabsent": "string(sign_map)"} }, ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") + field_of_view: List[float] = Field(..., description="""Size of viewing area, in meters.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field( None, json_schema_extra={ @@ -318,18 +308,16 @@ class ImagingRetinotopyVasculatureImage(ConfiguredBaseModel): } }, ) - bits_per_pixel: Optional[int] = Field( - None, + bits_per_pixel: int = Field( + ..., description="""Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value""", ) - dimension: Optional[int] = Field( - None, + dimension: List[int] = Field( + ..., description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""", ) - field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""") - format: Optional[str] = Field( - None, description="""Format of image. Right now only 'raw' is supported.""" - ) + 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.""") value: Optional[NDArray[Shape["* num_rows, * num_cols"], int]] = Field( None, json_schema_extra={ diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_0/hdmf_common_sparse.py b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_0/hdmf_common_sparse.py index 2ba56a5..af77c6c 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_0/hdmf_common_sparse.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_0/hdmf_common_sparse.py @@ -7,6 +7,7 @@ import sys from typing import Any, ClassVar, List, Literal, Dict, Optional, Union from pydantic import BaseModel, ConfigDict, Field, RootModel, field_validator import numpy as np +from numpydantic import NDArray, Shape metamodel_version = "None" version = "1.1.0" @@ -44,6 +45,7 @@ class LinkMLMeta(RootModel): return key in self.root +NUMPYDANTIC_VERSION = "1.2.1" linkml_meta = LinkMLMeta( { "annotations": { @@ -68,7 +70,13 @@ class CSRMatrix(ConfiguredBaseModel): ) name: str = Field(...) - shape: Optional[int] = Field(None, description="""the shape of this sparse matrix""") + shape: NDArray[Shape["2 null"], int] = Field( + ..., + description="""the shape of this sparse matrix""", + json_schema_extra={ + "linkml_meta": {"array": {"dimensions": [{"alias": "null", "exact_cardinality": 2}]}} + }, + ) indices: CSRMatrixIndices = Field(..., description="""column indices""") indptr: CSRMatrixIndptr = Field(..., description="""index pointer""") data: CSRMatrixData = Field(..., description="""values in the matrix""") diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_0/hdmf_common_table.py b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_0/hdmf_common_table.py index 93d1574..0647a30 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_0/hdmf_common_table.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_0/hdmf_common_table.py @@ -314,9 +314,7 @@ class Index(Data): ) name: str = Field(...) - target: Optional[Data] = Field( - None, description="""Target dataset that this index applies to.""" - ) + target: Data = Field(..., description="""Target dataset that this index applies to.""") class VectorData(VectorDataMixin): @@ -329,9 +327,7 @@ class VectorData(VectorDataMixin): ) name: str = Field(...) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") class VectorIndex(VectorIndexMixin): @@ -344,8 +340,8 @@ class VectorIndex(VectorIndexMixin): ) name: str = Field(...) - target: Optional[VectorData] = Field( - None, description="""Reference to the target dataset that this index applies to.""" + target: VectorData = Field( + ..., description="""Reference to the target dataset that this index applies to.""" ) @@ -373,11 +369,11 @@ class DynamicTableRegion(VectorData): ) name: str = Field(...) - table: Optional[DynamicTable] = Field( - None, description="""Reference to the DynamicTable object that this region applies to.""" + table: DynamicTable = Field( + ..., description="""Reference to the DynamicTable object that this region applies to.""" ) - description: Optional[str] = Field( - None, description="""Description of what this table region points to.""" + description: str = Field( + ..., description="""Description of what this table region points to.""" ) @@ -403,13 +399,11 @@ class DynamicTable(DynamicTableMixin): ) name: str = Field(...) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_2/hdmf_common_sparse.py b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_2/hdmf_common_sparse.py index 32401a4..8c05020 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_2/hdmf_common_sparse.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_2/hdmf_common_sparse.py @@ -7,6 +7,7 @@ import sys from typing import Any, ClassVar, List, Literal, Dict, Optional, Union from pydantic import BaseModel, ConfigDict, Field, RootModel, field_validator import numpy as np +from numpydantic import NDArray, Shape metamodel_version = "None" version = "1.1.2" @@ -44,6 +45,7 @@ class LinkMLMeta(RootModel): return key in self.root +NUMPYDANTIC_VERSION = "1.2.1" linkml_meta = LinkMLMeta( { "annotations": { @@ -68,7 +70,13 @@ class CSRMatrix(ConfiguredBaseModel): ) name: str = Field(...) - shape: Optional[int] = Field(None, description="""the shape of this sparse matrix""") + shape: NDArray[Shape["2 null"], int] = Field( + ..., + description="""the shape of this sparse matrix""", + json_schema_extra={ + "linkml_meta": {"array": {"dimensions": [{"alias": "null", "exact_cardinality": 2}]}} + }, + ) indices: CSRMatrixIndices = Field(..., description="""column indices""") indptr: CSRMatrixIndptr = Field(..., description="""index pointer""") data: CSRMatrixData = Field(..., description="""values in the matrix""") diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_2/hdmf_common_table.py b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_2/hdmf_common_table.py index 25748ee..21fc9c0 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_2/hdmf_common_table.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_2/hdmf_common_table.py @@ -314,9 +314,7 @@ class Index(Data): ) name: str = Field(...) - target: Optional[Data] = Field( - None, description="""Target dataset that this index applies to.""" - ) + target: Data = Field(..., description="""Target dataset that this index applies to.""") class VectorData(VectorDataMixin): @@ -329,9 +327,7 @@ class VectorData(VectorDataMixin): ) name: str = Field(...) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") class VectorIndex(VectorIndexMixin): @@ -344,8 +340,8 @@ class VectorIndex(VectorIndexMixin): ) name: str = Field(...) - target: Optional[VectorData] = Field( - None, description="""Reference to the target dataset that this index applies to.""" + target: VectorData = Field( + ..., description="""Reference to the target dataset that this index applies to.""" ) @@ -373,11 +369,11 @@ class DynamicTableRegion(VectorData): ) name: str = Field(...) - table: Optional[DynamicTable] = Field( - None, description="""Reference to the DynamicTable object that this region applies to.""" + table: DynamicTable = Field( + ..., description="""Reference to the DynamicTable object that this region applies to.""" ) - description: Optional[str] = Field( - None, description="""Description of what this table region points to.""" + description: str = Field( + ..., description="""Description of what this table region points to.""" ) @@ -403,13 +399,11 @@ class DynamicTable(DynamicTableMixin): ) name: str = Field(...) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_3/hdmf_common_sparse.py b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_3/hdmf_common_sparse.py index 872d645..c473269 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_3/hdmf_common_sparse.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_3/hdmf_common_sparse.py @@ -7,6 +7,7 @@ import sys from typing import Any, ClassVar, List, Literal, Dict, Optional, Union from pydantic import BaseModel, ConfigDict, Field, RootModel, field_validator import numpy as np +from numpydantic import NDArray, Shape metamodel_version = "None" version = "1.1.3" @@ -44,6 +45,7 @@ class LinkMLMeta(RootModel): return key in self.root +NUMPYDANTIC_VERSION = "1.2.1" linkml_meta = LinkMLMeta( { "annotations": { @@ -68,7 +70,13 @@ class CSRMatrix(ConfiguredBaseModel): ) name: str = Field(...) - shape: Optional[int] = Field(None, description="""the shape of this sparse matrix""") + shape: NDArray[Shape["2 null"], int] = Field( + ..., + description="""the shape of this sparse matrix""", + json_schema_extra={ + "linkml_meta": {"array": {"dimensions": [{"alias": "null", "exact_cardinality": 2}]}} + }, + ) indices: CSRMatrixIndices = Field(..., description="""column indices""") indptr: CSRMatrixIndptr = Field(..., description="""index pointer""") data: CSRMatrixData = Field(..., description="""values in the matrix""") diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_3/hdmf_common_table.py b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_3/hdmf_common_table.py index 3d4762c..0a4ed6e 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_3/hdmf_common_table.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_1_3/hdmf_common_table.py @@ -314,9 +314,7 @@ class Index(Data): ) name: str = Field(...) - target: Optional[Data] = Field( - None, description="""Target dataset that this index applies to.""" - ) + target: Data = Field(..., description="""Target dataset that this index applies to.""") class VectorData(VectorDataMixin): @@ -329,9 +327,7 @@ class VectorData(VectorDataMixin): ) name: str = Field(...) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -352,8 +348,8 @@ class VectorIndex(VectorIndexMixin): ) name: str = Field(...) - target: Optional[VectorData] = Field( - None, description="""Reference to the target dataset that this index applies to.""" + target: VectorData = Field( + ..., description="""Reference to the target dataset that this index applies to.""" ) value: Optional[NDArray[Shape["* num_rows"], Any]] = Field( None, json_schema_extra={"linkml_meta": {"array": {"dimensions": [{"alias": "num_rows"}]}}} @@ -384,11 +380,11 @@ class DynamicTableRegion(VectorData): ) name: str = Field(...) - table: Optional[DynamicTable] = Field( - None, description="""Reference to the DynamicTable object that this region applies to.""" + table: DynamicTable = Field( + ..., description="""Reference to the DynamicTable object that this region applies to.""" ) - description: Optional[str] = Field( - None, description="""Description of what this table region points to.""" + description: str = Field( + ..., description="""Description of what this table region points to.""" ) value: Optional[ Union[ @@ -422,13 +418,11 @@ class DynamicTable(DynamicTableMixin): ) name: str = Field(...) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_5_0/hdmf_common_sparse.py b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_5_0/hdmf_common_sparse.py index 49f08da..e261b0a 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_5_0/hdmf_common_sparse.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_5_0/hdmf_common_sparse.py @@ -71,8 +71,8 @@ class CSRMatrix(Container): ) name: str = Field(...) - shape: Optional[int] = Field( - None, description="""The shape (number of rows, number of columns) of this sparse matrix.""" + shape: List[int] = Field( + ..., description="""The shape (number of rows, number of columns) of this sparse matrix.""" ) indices: NDArray[Shape["* number_of_non_zero_values"], int] = Field( ..., diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_5_0/hdmf_common_table.py b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_5_0/hdmf_common_table.py index 61e5ba2..294f168 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_5_0/hdmf_common_table.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_5_0/hdmf_common_table.py @@ -303,9 +303,7 @@ class VectorData(VectorDataMixin): ) name: str = Field(...) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -326,12 +324,10 @@ class VectorIndex(VectorIndexMixin): ) name: str = Field(...) - target: Optional[VectorData] = Field( - None, description="""Reference to the target dataset that this index applies to.""" - ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" + target: VectorData = Field( + ..., description="""Reference to the target dataset that this index applies to.""" ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -366,11 +362,11 @@ class DynamicTableRegion(VectorData): ) name: str = Field(...) - table: Optional[DynamicTable] = Field( - None, description="""Reference to the DynamicTable object that this region applies to.""" + table: DynamicTable = Field( + ..., description="""Reference to the DynamicTable object that this region applies to.""" ) - description: Optional[str] = Field( - None, description="""Description of what this table region points to.""" + description: str = Field( + ..., description="""Description of what this table region points to.""" ) value: Optional[ Union[ @@ -392,13 +388,11 @@ class DynamicTable(DynamicTableMixin): ) name: str = Field(...) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -422,13 +416,11 @@ class AlignedDynamicTable(DynamicTable): None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "DynamicTable"}]}} ) name: str = Field(...) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_8_0/hdmf_common_sparse.py b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_8_0/hdmf_common_sparse.py index 56fad93..248869e 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_8_0/hdmf_common_sparse.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_8_0/hdmf_common_sparse.py @@ -71,8 +71,8 @@ class CSRMatrix(Container): ) name: str = Field(...) - shape: Optional[int] = Field( - None, description="""The shape (number of rows, number of columns) of this sparse matrix.""" + shape: List[int] = Field( + ..., description="""The shape (number of rows, number of columns) of this sparse matrix.""" ) indices: NDArray[Shape["* number_of_non_zero_values"], int] = Field( ..., diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_8_0/hdmf_common_table.py b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_8_0/hdmf_common_table.py index e1e413c..6fa0e8c 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_8_0/hdmf_common_table.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_common/v1_8_0/hdmf_common_table.py @@ -303,9 +303,7 @@ class VectorData(VectorDataMixin): ) name: str = Field(...) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -326,12 +324,10 @@ class VectorIndex(VectorIndexMixin): ) name: str = Field(...) - target: Optional[VectorData] = Field( - None, description="""Reference to the target dataset that this index applies to.""" - ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" + target: VectorData = Field( + ..., description="""Reference to the target dataset that this index applies to.""" ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], @@ -366,11 +362,11 @@ class DynamicTableRegion(VectorData): ) name: str = Field(...) - table: Optional[DynamicTable] = Field( - None, description="""Reference to the DynamicTable object that this region applies to.""" + table: DynamicTable = Field( + ..., description="""Reference to the DynamicTable object that this region applies to.""" ) - description: Optional[str] = Field( - None, description="""Description of what this table region points to.""" + description: str = Field( + ..., description="""Description of what this table region points to.""" ) value: Optional[ Union[ @@ -392,13 +388,11 @@ class DynamicTable(DynamicTableMixin): ) name: str = Field(...) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", @@ -422,13 +416,11 @@ class AlignedDynamicTable(DynamicTable): None, json_schema_extra={"linkml_meta": {"any_of": [{"range": "DynamicTable"}]}} ) name: str = Field(...) - colnames: Optional[str] = Field( - None, + 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: Optional[str] = Field( - None, description="""Description of what is in this dynamic table.""" - ) + description: str = Field(..., description="""Description of what is in this dynamic table.""") id: NDArray[Shape["* num_rows"], int] = Field( ..., description="""Array of unique identifiers for the rows of this dynamic table.""", diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_experimental/v0_1_0/hdmf_experimental_experimental.py b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_experimental/v0_1_0/hdmf_experimental_experimental.py index 135f2a3..0303e13 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_experimental/v0_1_0/hdmf_experimental_experimental.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_experimental/v0_1_0/hdmf_experimental_experimental.py @@ -71,13 +71,11 @@ class EnumData(VectorData): ) name: str = Field(...) - elements: Optional[VectorData] = Field( - None, + elements: VectorData = Field( + ..., description="""Reference to the VectorData object that contains the enumerable elements""", ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], diff --git a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_experimental/v0_5_0/hdmf_experimental_experimental.py b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_experimental/v0_5_0/hdmf_experimental_experimental.py index a7e6936..57e1a37 100644 --- a/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_experimental/v0_5_0/hdmf_experimental_experimental.py +++ b/nwb_linkml/src/nwb_linkml/models/pydantic/hdmf_experimental/v0_5_0/hdmf_experimental_experimental.py @@ -71,13 +71,11 @@ class EnumData(VectorData): ) name: str = Field(...) - elements: Optional[VectorData] = Field( - None, + elements: VectorData = Field( + ..., description="""Reference to the VectorData object that contains the enumerable elements""", ) - description: Optional[str] = Field( - None, description="""Description of what these vectors represent.""" - ) + description: str = Field(..., description="""Description of what these vectors represent.""") value: Optional[ Union[ NDArray[Shape["* dim0"], Any], diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.base.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.base.yaml index b2eebf1..f7d7f50 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.base.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.base.yaml @@ -38,10 +38,12 @@ classes: name: resolution description: Pixel resolution of the image, in pixels per centimeter. range: float32 + required: false description: name: description description: Description of the image. range: text + required: false value: name: value range: numeric @@ -97,13 +99,17 @@ classes: description: name: description description: Description of the time series. + ifabsent: string(no description) range: text + required: false comments: name: comments description: Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string. + ifabsent: string(no comments) range: text + required: false data: name: data description: Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first @@ -188,20 +194,25 @@ classes: 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: AnyType @@ -240,10 +251,14 @@ classes: name: rate description: Sampling rate, in Hz. range: float32 + required: true unit: name: unit description: Unit of measurement for time, which is fixed to 'seconds'. + ifabsent: string(seconds) range: text + required: true + equals_string: seconds value: name: value range: float64 @@ -291,6 +306,7 @@ classes: name: description description: Description of this collection of images. range: text + required: true image: name: image description: Images stored in this collection. diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.behavior.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.behavior.yaml index 4e5ffa0..cb41d79 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.behavior.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.behavior.yaml @@ -61,7 +61,9 @@ classes: 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'. + ifabsent: string(meters) range: text + required: false value: name: value range: numeric diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.device.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.device.yaml index ec5c6bc..1b7492f 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.device.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.device.yaml @@ -28,8 +28,10 @@ classes: description: Description of the device (e.g., model, firmware version, processing software version, etc.) as free-form text. range: text + required: false manufacturer: name: manufacturer description: The name of the manufacturer of the device. range: text + required: false tree_root: true diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.ecephys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.ecephys.yaml index 5af96b3..7d61f52 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.ecephys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.ecephys.yaml @@ -295,12 +295,14 @@ classes: name: description description: Description of this electrode group. range: text + required: true location: name: location description: Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible. range: text + required: true position: name: position description: stereotaxic or common framework coordinates diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.file.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.file.yaml index 3dd86fc..6550555 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.file.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.file.yaml @@ -37,7 +37,10 @@ classes: name: nwb_version description: File version string. Use semantic versioning, e.g. 1.2.1. This will be the name of the format with trailing major, minor and patch numbers. + ifabsent: string(2.1.0) range: text + required: true + equals_string: 2.1.0 file_create_date: name: file_create_date description: 'A record of the date the file was created and of subsequent @@ -443,6 +446,7 @@ classes: name: file_name description: Name of script file. range: text + required: true value: name: value range: text diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.icephys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.icephys.yaml index d12f7e1..dc70464 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.icephys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.icephys.yaml @@ -29,10 +29,12 @@ classes: name: stimulus_description description: Protocol/stimulus name for this patch-clamp dataset. range: text + required: true sweep_number: name: sweep_number description: Sweep number, allows to group different PatchClampSeries together. range: uint32 + required: false data: name: data description: Recorded voltage or current. @@ -74,6 +76,7 @@ classes: 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: @@ -131,7 +134,10 @@ classes: 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'. + ifabsent: string(volts) range: text + required: true + equals_string: volts value: name: value range: AnyType @@ -198,7 +204,10 @@ classes: 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 @@ -278,7 +287,10 @@ classes: 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 @@ -296,7 +308,10 @@ classes: unit: name: unit description: Unit of measurement for capacitance_fast, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -314,7 +329,10 @@ classes: unit: name: unit description: Unit of measurement for capacitance_fast, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -333,7 +351,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'. + ifabsent: string(hertz) range: text + required: true + equals_string: hertz value: name: value range: float32 @@ -352,7 +373,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_correction, which is fixed to 'percent'. + ifabsent: string(percent) range: text + required: true + equals_string: percent value: name: value range: float32 @@ -371,7 +395,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'. + ifabsent: string(percent) range: text + required: true + equals_string: percent value: name: value range: float32 @@ -390,7 +417,10 @@ classes: name: unit description: Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -409,7 +439,10 @@ classes: name: unit description: Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'. + ifabsent: string(ohms) range: text + required: true + equals_string: ohms value: name: value range: float32 @@ -445,7 +478,10 @@ classes: 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'. + ifabsent: string(volts) range: text + required: true + equals_string: volts value: name: value range: AnyType diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.image.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.image.yaml index 271f77d..6920484 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.image.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.image.yaml @@ -132,6 +132,8 @@ classes: (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0]. range: int32 + required: true + multivalued: true value: name: value array: diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.misc.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.misc.yaml index 92edf08..4337a4e 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.misc.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.misc.yaml @@ -72,7 +72,9 @@ classes: 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'". + ifabsent: string(see 'feature_units') range: text + required: false value: name: value range: numeric @@ -186,7 +188,9 @@ classes: 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'. + ifabsent: string(no unit) range: text + required: true value: name: value array: @@ -384,3 +388,4 @@ classes: if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be between samples. range: float64 + required: false diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.ophys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.ophys.yaml index d44aaa2..1183186 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.ophys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.ophys.yaml @@ -29,12 +29,14 @@ classes: name: pmt_gain description: Photomultiplier gain. range: float32 + required: false scan_line_rate: name: scan_line_rate description: Lines imaged per second. This is also stored in /general/optophysiology but is kept here as it is useful information for analysis, and so good to be stored w/ the actual data. range: float32 + required: false field_of_view: name: field_of_view description: Width, height and depth of image, or imaged area, in meters. @@ -277,12 +279,16 @@ classes: x = -500 to 499, y = -500 to 499 that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get from raw data acquisition pixel units to meters is 2/1000. + ifabsent: float(1.0) range: float32 + required: false unit: name: unit description: Base unit of measurement for working with the data. The default value is 'meters'. + ifabsent: string(meters) range: text + required: false value: name: value range: float32 @@ -315,7 +321,9 @@ classes: unit: name: unit description: Measurement units for origin_coords. The default value is 'meters'. + ifabsent: string(meters) range: text + required: true value: name: value array: @@ -340,7 +348,9 @@ classes: unit: name: unit description: Measurement units for grid_spacing. The default value is 'meters'. + ifabsent: string(meters) range: text + required: true value: name: value array: diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.retinotopy.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.retinotopy.yaml index f3a06cd..3150687 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.retinotopy.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_0/core.nwb.retinotopy.yaml @@ -28,10 +28,14 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true value: name: value array: @@ -54,6 +58,7 @@ classes: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -77,19 +82,25 @@ classes: description: Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value. range: int32 + required: true dimension: name: dimension description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true format: name: format description: Format of image. Right now only 'raw' is supported. range: text + required: true tree_root: true ImagingRetinotopy: name: ImagingRetinotopy @@ -223,3 +234,4 @@ classes: name: focal_depth description: Focal depth offset, in meters. range: float32 + required: true diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.base.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.base.yaml index 234bbc7..c81fea9 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.base.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.base.yaml @@ -38,10 +38,12 @@ classes: name: resolution description: Pixel resolution of the image, in pixels per centimeter. range: float32 + required: false description: name: description description: Description of the image. range: text + required: false value: name: value range: numeric @@ -97,13 +99,17 @@ classes: description: name: description description: Description of the time series. + ifabsent: string(no description) range: text + required: false comments: name: comments description: Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string. + ifabsent: string(no comments) range: text + required: false data: name: data description: Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first @@ -188,20 +194,25 @@ classes: 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: AnyType @@ -240,10 +251,14 @@ classes: name: rate description: Sampling rate, in Hz. range: float32 + required: true unit: name: unit description: Unit of measurement for time, which is fixed to 'seconds'. + ifabsent: string(seconds) range: text + required: true + equals_string: seconds value: name: value range: float64 @@ -291,6 +306,7 @@ classes: name: description description: Description of this collection of images. range: text + required: true image: name: image description: Images stored in this collection. diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.behavior.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.behavior.yaml index 03ba313..c555f1a 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.behavior.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.behavior.yaml @@ -61,7 +61,9 @@ classes: 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'. + ifabsent: string(meters) range: text + required: false value: name: value range: numeric diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.device.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.device.yaml index fdb85e6..e0969c8 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.device.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.device.yaml @@ -28,8 +28,10 @@ classes: description: Description of the device (e.g., model, firmware version, processing software version, etc.) as free-form text. range: text + required: false manufacturer: name: manufacturer description: The name of the manufacturer of the device. range: text + required: false tree_root: true diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.ecephys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.ecephys.yaml index 2226676..d5aaa6e 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.ecephys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.ecephys.yaml @@ -295,12 +295,14 @@ classes: name: description description: Description of this electrode group. range: text + required: true location: name: location description: Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible. range: text + required: true position: name: position description: stereotaxic or common framework coordinates diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.file.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.file.yaml index 504a763..2b01096 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.file.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.file.yaml @@ -37,7 +37,10 @@ classes: name: nwb_version description: File version string. Use semantic versioning, e.g. 1.2.1. This will be the name of the format with trailing major, minor and patch numbers. + ifabsent: string(2.2.1) range: text + required: true + equals_string: 2.2.1 file_create_date: name: file_create_date description: 'A record of the date the file was created and of subsequent @@ -443,6 +446,7 @@ classes: name: file_name description: Name of script file. range: text + required: true value: name: value range: text diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.icephys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.icephys.yaml index 42fa48f..11c4893 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.icephys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.icephys.yaml @@ -29,10 +29,12 @@ classes: name: stimulus_description description: Protocol/stimulus name for this patch-clamp dataset. range: text + required: true sweep_number: name: sweep_number description: Sweep number, allows to group different PatchClampSeries together. range: uint32 + required: false data: name: data description: Recorded voltage or current. @@ -74,6 +76,7 @@ classes: 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: @@ -131,7 +134,10 @@ classes: 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'. + ifabsent: string(volts) range: text + required: true + equals_string: volts value: name: value range: AnyType @@ -198,7 +204,10 @@ classes: 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 @@ -278,7 +287,10 @@ classes: 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 @@ -296,7 +308,10 @@ classes: unit: name: unit description: Unit of measurement for capacitance_fast, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -314,7 +329,10 @@ classes: unit: name: unit description: Unit of measurement for capacitance_fast, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -333,7 +351,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'. + ifabsent: string(hertz) range: text + required: true + equals_string: hertz value: name: value range: float32 @@ -352,7 +373,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_correction, which is fixed to 'percent'. + ifabsent: string(percent) range: text + required: true + equals_string: percent value: name: value range: float32 @@ -371,7 +395,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'. + ifabsent: string(percent) range: text + required: true + equals_string: percent value: name: value range: float32 @@ -390,7 +417,10 @@ classes: name: unit description: Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -409,7 +439,10 @@ classes: name: unit description: Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'. + ifabsent: string(ohms) range: text + required: true + equals_string: ohms value: name: value range: float32 @@ -445,7 +478,10 @@ classes: 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'. + ifabsent: string(volts) range: text + required: true + equals_string: volts value: name: value range: AnyType diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.image.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.image.yaml index c74d614..7f406bc 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.image.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.image.yaml @@ -132,6 +132,8 @@ classes: (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0]. range: int32 + required: true + multivalued: true value: name: value array: diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.misc.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.misc.yaml index 82a8100..59ff81b 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.misc.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.misc.yaml @@ -72,7 +72,9 @@ classes: 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'". + ifabsent: string(see 'feature_units') range: text + required: false value: name: value range: numeric @@ -186,7 +188,9 @@ classes: 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'. + ifabsent: string(no unit) range: text + required: true value: name: value array: @@ -384,3 +388,4 @@ classes: if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be between samples. range: float64 + required: false diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.ophys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.ophys.yaml index d5e6b39..45df3d6 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.ophys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.ophys.yaml @@ -29,12 +29,14 @@ classes: name: pmt_gain description: Photomultiplier gain. range: float32 + required: false scan_line_rate: name: scan_line_rate description: Lines imaged per second. This is also stored in /general/optophysiology but is kept here as it is useful information for analysis, and so good to be stored w/ the actual data. range: float32 + required: false field_of_view: name: field_of_view description: Width, height and depth of image, or imaged area, in meters. @@ -277,12 +279,16 @@ classes: x = -500 to 499, y = -500 to 499 that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get from raw data acquisition pixel units to meters is 2/1000. + ifabsent: float(1.0) range: float32 + required: false unit: name: unit description: Base unit of measurement for working with the data. The default value is 'meters'. + ifabsent: string(meters) range: text + required: false value: name: value range: float32 @@ -315,7 +321,9 @@ classes: unit: name: unit description: Measurement units for origin_coords. The default value is 'meters'. + ifabsent: string(meters) range: text + required: true value: name: value array: @@ -340,7 +348,9 @@ classes: unit: name: unit description: Measurement units for grid_spacing. The default value is 'meters'. + ifabsent: string(meters) range: text + required: true value: name: value array: diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.retinotopy.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.retinotopy.yaml index 5a552ed..8543f50 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.retinotopy.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_1/core.nwb.retinotopy.yaml @@ -28,10 +28,14 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true value: name: value array: @@ -54,6 +58,7 @@ classes: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -77,19 +82,25 @@ classes: description: Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value. range: int32 + required: true dimension: name: dimension description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true format: name: format description: Format of image. Right now only 'raw' is supported. range: text + required: true tree_root: true ImagingRetinotopy: name: ImagingRetinotopy @@ -223,3 +234,4 @@ classes: name: focal_depth description: Focal depth offset, in meters. range: float32 + required: true diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.base.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.base.yaml index bf4ee39..771c828 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.base.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.base.yaml @@ -38,10 +38,12 @@ classes: name: resolution description: Pixel resolution of the image, in pixels per centimeter. range: float32 + required: false description: name: description description: Description of the image. range: text + required: false value: name: value range: numeric @@ -97,13 +99,17 @@ classes: description: name: description description: Description of the time series. + ifabsent: string(no description) range: text + required: false comments: name: comments description: Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string. + ifabsent: string(no comments) range: text + required: false data: name: data description: Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first @@ -188,20 +194,25 @@ classes: 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: AnyType @@ -240,10 +251,14 @@ classes: name: rate description: Sampling rate, in Hz. range: float32 + required: true unit: name: unit description: Unit of measurement for time, which is fixed to 'seconds'. + ifabsent: string(seconds) range: text + required: true + equals_string: seconds value: name: value range: float64 @@ -291,6 +306,7 @@ classes: name: description description: Description of this collection of images. range: text + required: true image: name: image description: Images stored in this collection. diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.behavior.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.behavior.yaml index 11f271b..b95e9da 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.behavior.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.behavior.yaml @@ -61,7 +61,9 @@ classes: 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'. + ifabsent: string(meters) range: text + required: false value: name: value range: numeric diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.device.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.device.yaml index a436b52..2f26c6a 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.device.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.device.yaml @@ -28,8 +28,10 @@ classes: description: Description of the device (e.g., model, firmware version, processing software version, etc.) as free-form text. range: text + required: false manufacturer: name: manufacturer description: The name of the manufacturer of the device. range: text + required: false tree_root: true diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.ecephys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.ecephys.yaml index 83d97ad..6641150 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.ecephys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.ecephys.yaml @@ -295,12 +295,14 @@ classes: name: description description: Description of this electrode group. range: text + required: true location: name: location description: Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible. range: text + required: true position: name: position description: stereotaxic or common framework coordinates diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.file.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.file.yaml index 3a250d5..1186898 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.file.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.file.yaml @@ -37,7 +37,10 @@ classes: name: nwb_version description: File version string. Use semantic versioning, e.g. 1.2.1. This will be the name of the format with trailing major, minor and patch numbers. + ifabsent: string(2.2.2) range: text + required: true + equals_string: 2.2.2 file_create_date: name: file_create_date description: 'A record of the date the file was created and of subsequent @@ -443,6 +446,7 @@ classes: name: file_name description: Name of script file. range: text + required: true value: name: value range: text diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.icephys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.icephys.yaml index 756714c..a9c82e9 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.icephys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.icephys.yaml @@ -29,10 +29,12 @@ classes: name: stimulus_description description: Protocol/stimulus name for this patch-clamp dataset. range: text + required: true sweep_number: name: sweep_number description: Sweep number, allows to group different PatchClampSeries together. range: uint32 + required: false data: name: data description: Recorded voltage or current. @@ -74,6 +76,7 @@ classes: 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: @@ -131,7 +134,10 @@ classes: 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'. + ifabsent: string(volts) range: text + required: true + equals_string: volts value: name: value range: AnyType @@ -198,7 +204,10 @@ classes: 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 @@ -278,7 +287,10 @@ classes: 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 @@ -296,7 +308,10 @@ classes: unit: name: unit description: Unit of measurement for capacitance_fast, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -314,7 +329,10 @@ classes: unit: name: unit description: Unit of measurement for capacitance_fast, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -333,7 +351,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'. + ifabsent: string(hertz) range: text + required: true + equals_string: hertz value: name: value range: float32 @@ -352,7 +373,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_correction, which is fixed to 'percent'. + ifabsent: string(percent) range: text + required: true + equals_string: percent value: name: value range: float32 @@ -371,7 +395,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'. + ifabsent: string(percent) range: text + required: true + equals_string: percent value: name: value range: float32 @@ -390,7 +417,10 @@ classes: name: unit description: Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -409,7 +439,10 @@ classes: name: unit description: Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'. + ifabsent: string(ohms) range: text + required: true + equals_string: ohms value: name: value range: float32 @@ -445,7 +478,10 @@ classes: 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'. + ifabsent: string(volts) range: text + required: true + equals_string: volts value: name: value range: AnyType diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.image.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.image.yaml index 7cb22bc..1e11ca4 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.image.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.image.yaml @@ -132,6 +132,8 @@ classes: (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0]. range: int32 + required: true + multivalued: true value: name: value array: diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.misc.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.misc.yaml index 79c8173..de3d137 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.misc.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.misc.yaml @@ -72,7 +72,9 @@ classes: 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'". + ifabsent: string(see 'feature_units') range: text + required: false value: name: value range: numeric @@ -186,7 +188,9 @@ classes: 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'. + ifabsent: string(no unit) range: text + required: true value: name: value array: @@ -384,3 +388,4 @@ classes: if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be between samples. range: float64 + required: false diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.ophys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.ophys.yaml index 727c05e..a5923c9 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.ophys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.ophys.yaml @@ -29,12 +29,14 @@ classes: name: pmt_gain description: Photomultiplier gain. range: float32 + required: false scan_line_rate: name: scan_line_rate description: Lines imaged per second. This is also stored in /general/optophysiology but is kept here as it is useful information for analysis, and so good to be stored w/ the actual data. range: float32 + required: false field_of_view: name: field_of_view description: Width, height and depth of image, or imaged area, in meters. @@ -277,12 +279,16 @@ classes: x = -500 to 499, y = -500 to 499 that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get from raw data acquisition pixel units to meters is 2/1000. + ifabsent: float(1.0) range: float32 + required: false unit: name: unit description: Base unit of measurement for working with the data. The default value is 'meters'. + ifabsent: string(meters) range: text + required: false value: name: value range: float32 @@ -315,7 +321,9 @@ classes: unit: name: unit description: Measurement units for origin_coords. The default value is 'meters'. + ifabsent: string(meters) range: text + required: true value: name: value array: @@ -340,7 +348,9 @@ classes: unit: name: unit description: Measurement units for grid_spacing. The default value is 'meters'. + ifabsent: string(meters) range: text + required: true value: name: value array: diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.retinotopy.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.retinotopy.yaml index 2e53599..5248fa1 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.retinotopy.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_2/core.nwb.retinotopy.yaml @@ -106,14 +106,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -137,14 +142,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -167,14 +177,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -198,14 +213,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -229,23 +249,30 @@ classes: description: Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value. range: int32 + required: true dimension: name: dimension description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true focal_depth: name: focal_depth description: Focal depth offset, in meters. range: float32 + required: true format: name: format description: Format of image. Right now only 'raw' is supported. range: text + required: true value: name: value array: @@ -269,10 +296,14 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true value: name: value array: @@ -296,19 +327,25 @@ classes: description: Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value range: int32 + required: true dimension: name: dimension description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true format: name: format description: Format of image. Right now only 'raw' is supported. range: text + required: true value: name: value array: diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.base.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.base.yaml index 8e458a3..6a09101 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.base.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.base.yaml @@ -38,10 +38,12 @@ classes: name: resolution description: Pixel resolution of the image, in pixels per centimeter. range: float32 + required: false description: name: description description: Description of the image. range: text + required: false value: name: value range: numeric @@ -97,13 +99,17 @@ classes: description: name: description description: Description of the time series. + ifabsent: string(no description) range: text + required: false comments: name: comments description: Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string. + ifabsent: string(no comments) range: text + required: false data: name: data description: Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first @@ -188,20 +194,25 @@ classes: 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: AnyType @@ -240,10 +251,14 @@ classes: name: rate description: Sampling rate, in Hz. range: float32 + required: true unit: name: unit description: Unit of measurement for time, which is fixed to 'seconds'. + ifabsent: string(seconds) range: text + required: true + equals_string: seconds value: name: value range: float64 @@ -291,6 +306,7 @@ classes: name: description description: Description of this collection of images. range: text + required: true image: name: image description: Images stored in this collection. diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.behavior.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.behavior.yaml index e6ae7ad..836b4eb 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.behavior.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.behavior.yaml @@ -61,7 +61,9 @@ classes: 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'. + ifabsent: string(meters) range: text + required: false value: name: value range: numeric diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.device.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.device.yaml index e8f28d6..62fc686 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.device.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.device.yaml @@ -28,8 +28,10 @@ classes: description: Description of the device (e.g., model, firmware version, processing software version, etc.) as free-form text. range: text + required: false manufacturer: name: manufacturer description: The name of the manufacturer of the device. range: text + required: false tree_root: true diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.ecephys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.ecephys.yaml index 8195921..8acdc93 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.ecephys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.ecephys.yaml @@ -295,12 +295,14 @@ classes: name: description description: Description of this electrode group. range: text + required: true location: name: location description: Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible. range: text + required: true position: name: position description: stereotaxic or common framework coordinates diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.file.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.file.yaml index 1e98c12..45add51 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.file.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.file.yaml @@ -34,6 +34,7 @@ classes: name: notes description: Any notes the user has about the dataset being stored range: text + required: true tree_root: true NWBFile: name: NWBFile @@ -51,7 +52,10 @@ classes: name: nwb_version description: File version string. Use semantic versioning, e.g. 1.2.1. This will be the name of the format with trailing major, minor and patch numbers. + ifabsent: string(2.2.4) range: text + required: true + equals_string: 2.2.4 file_create_date: name: file_create_date description: 'A record of the date the file was created and of subsequent @@ -457,6 +461,7 @@ classes: name: file_name description: Name of script file. range: text + required: true value: name: value range: text diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.icephys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.icephys.yaml index fc1459d..200456d 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.icephys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.icephys.yaml @@ -29,10 +29,12 @@ classes: name: stimulus_description description: Protocol/stimulus name for this patch-clamp dataset. range: text + required: true sweep_number: name: sweep_number description: Sweep number, allows to group different PatchClampSeries together. range: uint32 + required: false data: name: data description: Recorded voltage or current. @@ -74,6 +76,7 @@ classes: 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: @@ -131,7 +134,10 @@ classes: 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'. + ifabsent: string(volts) range: text + required: true + equals_string: volts value: name: value range: AnyType @@ -198,7 +204,10 @@ classes: 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 @@ -278,7 +287,10 @@ classes: 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 @@ -296,7 +308,10 @@ classes: unit: name: unit description: Unit of measurement for capacitance_fast, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -314,7 +329,10 @@ classes: unit: name: unit description: Unit of measurement for capacitance_fast, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -333,7 +351,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'. + ifabsent: string(hertz) range: text + required: true + equals_string: hertz value: name: value range: float32 @@ -352,7 +373,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_correction, which is fixed to 'percent'. + ifabsent: string(percent) range: text + required: true + equals_string: percent value: name: value range: float32 @@ -371,7 +395,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'. + ifabsent: string(percent) range: text + required: true + equals_string: percent value: name: value range: float32 @@ -390,7 +417,10 @@ classes: name: unit description: Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -409,7 +439,10 @@ classes: name: unit description: Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'. + ifabsent: string(ohms) range: text + required: true + equals_string: ohms value: name: value range: float32 @@ -445,7 +478,10 @@ classes: 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'. + ifabsent: string(volts) range: text + required: true + equals_string: volts value: name: value range: AnyType diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.image.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.image.yaml index 38a564e..4beec01 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.image.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.image.yaml @@ -132,6 +132,8 @@ classes: (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0]. range: int32 + required: true + multivalued: true value: name: value array: diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.misc.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.misc.yaml index 62fda1f..82d4a9f 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.misc.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.misc.yaml @@ -72,7 +72,9 @@ classes: 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'". + ifabsent: string(see 'feature_units') range: text + required: false value: name: value range: numeric @@ -186,7 +188,9 @@ classes: 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'. + ifabsent: string(no unit) range: text + required: true value: name: value array: @@ -384,3 +388,4 @@ classes: if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be between samples. range: float64 + required: false diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.ophys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.ophys.yaml index c02f6d8..73f7c6f 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.ophys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.ophys.yaml @@ -29,12 +29,14 @@ classes: name: pmt_gain description: Photomultiplier gain. range: float32 + required: false scan_line_rate: name: scan_line_rate description: Lines imaged per second. This is also stored in /general/optophysiology but is kept here as it is useful information for analysis, and so good to be stored w/ the actual data. range: float32 + required: false field_of_view: name: field_of_view description: Width, height and depth of image, or imaged area, in meters. @@ -436,12 +438,16 @@ classes: x = -500 to 499, y = -500 to 499 that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get from raw data acquisition pixel units to meters is 2/1000. + ifabsent: float(1.0) range: float32 + required: false unit: name: unit description: Base unit of measurement for working with the data. The default value is 'meters'. + ifabsent: string(meters) range: text + required: false value: name: value range: float32 @@ -474,7 +480,9 @@ classes: unit: name: unit description: Measurement units for origin_coords. The default value is 'meters'. + ifabsent: string(meters) range: text + required: true value: name: value array: @@ -499,7 +507,9 @@ classes: unit: name: unit description: Measurement units for grid_spacing. The default value is 'meters'. + ifabsent: string(meters) range: text + required: true value: name: value array: diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.retinotopy.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.retinotopy.yaml index 7cf81d7..5869564 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.retinotopy.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_4/core.nwb.retinotopy.yaml @@ -106,14 +106,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -137,14 +142,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -167,14 +177,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -198,14 +213,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -229,23 +249,30 @@ classes: description: Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value. range: int32 + required: true dimension: name: dimension description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true focal_depth: name: focal_depth description: Focal depth offset, in meters. range: float32 + required: true format: name: format description: Format of image. Right now only 'raw' is supported. range: text + required: true value: name: value array: @@ -269,10 +296,14 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true value: name: value array: @@ -296,19 +327,25 @@ classes: description: Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value range: int32 + required: true dimension: name: dimension description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true format: name: format description: Format of image. Right now only 'raw' is supported. range: text + required: true value: name: value array: diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.base.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.base.yaml index e3161a4..477b107 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.base.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.base.yaml @@ -38,10 +38,12 @@ classes: name: resolution description: Pixel resolution of the image, in pixels per centimeter. range: float32 + required: false description: name: description description: Description of the image. range: text + required: false value: name: value range: numeric @@ -97,13 +99,17 @@ classes: description: name: description description: Description of the time series. + ifabsent: string(no description) range: text + required: false comments: name: comments description: Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string. + ifabsent: string(no comments) range: text + required: false data: name: data description: Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first @@ -188,20 +194,25 @@ classes: 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: AnyType @@ -240,10 +251,14 @@ classes: name: rate description: Sampling rate, in Hz. range: float32 + required: true unit: name: unit description: Unit of measurement for time, which is fixed to 'seconds'. + ifabsent: string(seconds) range: text + required: true + equals_string: seconds value: name: value range: float64 @@ -291,6 +306,7 @@ classes: name: description description: Description of this collection of images. range: text + required: true image: name: image description: Images stored in this collection. diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.behavior.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.behavior.yaml index 65f31ca..97c06d8 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.behavior.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.behavior.yaml @@ -61,7 +61,9 @@ classes: 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'. + ifabsent: string(meters) range: text + required: false value: name: value range: numeric diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.device.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.device.yaml index 32b7d65..9572c3b 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.device.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.device.yaml @@ -28,8 +28,10 @@ classes: description: Description of the device (e.g., model, firmware version, processing software version, etc.) as free-form text. range: text + required: false manufacturer: name: manufacturer description: The name of the manufacturer of the device. range: text + required: false tree_root: true diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.ecephys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.ecephys.yaml index 9d008a1..0e11ce2 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.ecephys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.ecephys.yaml @@ -295,12 +295,14 @@ classes: name: description description: Description of this electrode group. range: text + required: true location: name: location description: Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible. range: text + required: true position: name: position description: stereotaxic or common framework coordinates diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.file.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.file.yaml index efe69a8..f52421b 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.file.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.file.yaml @@ -34,6 +34,7 @@ classes: name: notes description: Any notes the user has about the dataset being stored range: text + required: true tree_root: true NWBFile: name: NWBFile @@ -51,7 +52,10 @@ classes: name: nwb_version description: File version string. Use semantic versioning, e.g. 1.2.1. This will be the name of the format with trailing major, minor and patch numbers. + ifabsent: string(2.2.5) range: text + required: true + equals_string: 2.2.5 file_create_date: name: file_create_date description: 'A record of the date the file was created and of subsequent @@ -457,6 +461,7 @@ classes: name: file_name description: Name of script file. range: text + required: true value: name: value range: text diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.icephys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.icephys.yaml index 4aa8c39..9eb505a 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.icephys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.icephys.yaml @@ -29,10 +29,12 @@ classes: name: stimulus_description description: Protocol/stimulus name for this patch-clamp dataset. range: text + required: true sweep_number: name: sweep_number description: Sweep number, allows to group different PatchClampSeries together. range: uint32 + required: false data: name: data description: Recorded voltage or current. @@ -74,6 +76,7 @@ classes: 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: @@ -131,7 +134,10 @@ classes: 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'. + ifabsent: string(volts) range: text + required: true + equals_string: volts value: name: value range: AnyType @@ -198,7 +204,10 @@ classes: 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 @@ -278,7 +287,10 @@ classes: 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 @@ -296,7 +308,10 @@ classes: unit: name: unit description: Unit of measurement for capacitance_fast, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -314,7 +329,10 @@ classes: unit: name: unit description: Unit of measurement for capacitance_fast, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -333,7 +351,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'. + ifabsent: string(hertz) range: text + required: true + equals_string: hertz value: name: value range: float32 @@ -352,7 +373,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_correction, which is fixed to 'percent'. + ifabsent: string(percent) range: text + required: true + equals_string: percent value: name: value range: float32 @@ -371,7 +395,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'. + ifabsent: string(percent) range: text + required: true + equals_string: percent value: name: value range: float32 @@ -390,7 +417,10 @@ classes: name: unit description: Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -409,7 +439,10 @@ classes: name: unit description: Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'. + ifabsent: string(ohms) range: text + required: true + equals_string: ohms value: name: value range: float32 @@ -445,7 +478,10 @@ classes: 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'. + ifabsent: string(volts) range: text + required: true + equals_string: volts value: name: value range: AnyType diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.image.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.image.yaml index 6d564d7..4218d3b 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.image.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.image.yaml @@ -132,6 +132,8 @@ classes: (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0]. range: int32 + required: true + multivalued: true value: name: value array: diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.misc.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.misc.yaml index bbfbc48..f163348 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.misc.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.misc.yaml @@ -72,7 +72,9 @@ classes: 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'". + ifabsent: string(see 'feature_units') range: text + required: false value: name: value range: numeric @@ -186,7 +188,9 @@ classes: 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'. + ifabsent: string(no unit) range: text + required: true value: name: value array: @@ -384,3 +388,4 @@ classes: if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be between samples. range: float64 + required: false diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.ophys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.ophys.yaml index 6218538..6613637 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.ophys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.ophys.yaml @@ -29,12 +29,14 @@ classes: name: pmt_gain description: Photomultiplier gain. range: float32 + required: false scan_line_rate: name: scan_line_rate description: Lines imaged per second. This is also stored in /general/optophysiology but is kept here as it is useful information for analysis, and so good to be stored w/ the actual data. range: float32 + required: false field_of_view: name: field_of_view description: Width, height and depth of image, or imaged area, in meters. @@ -436,12 +438,16 @@ classes: x = -500 to 499, y = -500 to 499 that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get from raw data acquisition pixel units to meters is 2/1000. + ifabsent: float(1.0) range: float32 + required: false unit: name: unit description: Base unit of measurement for working with the data. The default value is 'meters'. + ifabsent: string(meters) range: text + required: false value: name: value range: float32 @@ -474,7 +480,9 @@ classes: unit: name: unit description: Measurement units for origin_coords. The default value is 'meters'. + ifabsent: string(meters) range: text + required: true value: name: value range: float32 @@ -502,7 +510,9 @@ classes: unit: name: unit description: Measurement units for grid_spacing. The default value is 'meters'. + ifabsent: string(meters) range: text + required: true value: name: value range: float32 diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.retinotopy.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.retinotopy.yaml index 4fe5360..457b1cc 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.retinotopy.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_2_5/core.nwb.retinotopy.yaml @@ -106,14 +106,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -137,14 +142,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -167,14 +177,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -198,14 +213,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -229,23 +249,30 @@ classes: description: Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value. range: int32 + required: true dimension: name: dimension description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true focal_depth: name: focal_depth description: Focal depth offset, in meters. range: float32 + required: true format: name: format description: Format of image. Right now only 'raw' is supported. range: text + required: true value: name: value array: @@ -269,10 +296,14 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true value: name: value array: @@ -296,19 +327,25 @@ classes: description: Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value range: int32 + required: true dimension: name: dimension description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true format: name: format description: Format of image. Right now only 'raw' is supported. range: text + required: true value: name: value array: diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.base.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.base.yaml index 8249ab1..ab7eabf 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.base.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.base.yaml @@ -39,10 +39,12 @@ classes: name: resolution description: Pixel resolution of the image, in pixels per centimeter. range: float32 + required: false description: name: description description: Description of the image. range: text + required: false value: name: value range: numeric @@ -98,13 +100,17 @@ classes: description: name: description description: Description of the time series. + ifabsent: string(no description) range: text + required: false comments: name: comments description: Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string. + ifabsent: string(no comments) range: text + required: false data: name: data description: Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first @@ -189,20 +195,25 @@ classes: 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 continuity: name: continuity description: Optionally describe the continuity of the data. Can be "continuous", @@ -215,6 +226,7 @@ classes: the way this data is interpreted, the way it is visualized, and what analysis methods are applicable. range: text + required: false value: name: value range: AnyType @@ -253,10 +265,14 @@ classes: name: rate description: Sampling rate, in Hz. range: float32 + required: true unit: name: unit description: Unit of measurement for time, which is fixed to 'seconds'. + ifabsent: string(seconds) range: text + required: true + equals_string: seconds value: name: value range: float64 @@ -304,6 +320,7 @@ classes: name: description description: Description of this collection of images. range: text + required: true image: name: image description: Images stored in this collection. diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.behavior.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.behavior.yaml index 755fecd..07bb957 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.behavior.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.behavior.yaml @@ -61,7 +61,9 @@ classes: 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'. + ifabsent: string(meters) range: text + required: false value: name: value range: numeric diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.device.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.device.yaml index c0f4e17..7881fcf 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.device.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.device.yaml @@ -28,8 +28,10 @@ classes: description: Description of the device (e.g., model, firmware version, processing software version, etc.) as free-form text. range: text + required: false manufacturer: name: manufacturer description: The name of the manufacturer of the device. range: text + required: false tree_root: true diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.ecephys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.ecephys.yaml index 4b9767f..12ad322 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.ecephys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.ecephys.yaml @@ -37,6 +37,7 @@ classes: at 300 Hz". If a non-standard filter type is used, provide as much detail about the filter properties as possible. range: text + required: false data: name: data description: Recorded voltage data. @@ -305,12 +306,14 @@ classes: name: description description: Description of this electrode group. range: text + required: true location: name: location description: Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible. range: text + required: true position: name: position description: stereotaxic or common framework coordinates diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.file.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.file.yaml index 75dc8f9..0b76f4f 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.file.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.file.yaml @@ -34,6 +34,7 @@ classes: name: notes description: Any notes the user has about the dataset being stored range: text + required: true tree_root: true NWBFile: name: NWBFile @@ -51,7 +52,10 @@ classes: name: nwb_version description: File version string. Use semantic versioning, e.g. 1.2.1. This will be the name of the format with trailing major, minor and patch numbers. + ifabsent: string(2.3.0) range: text + required: true + equals_string: 2.3.0 file_create_date: name: file_create_date description: 'A record of the date the file was created and of subsequent @@ -457,6 +461,7 @@ classes: name: file_name description: Name of script file. range: text + required: true value: name: value range: text diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.icephys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.icephys.yaml index 9e14aec..d93bb52 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.icephys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.icephys.yaml @@ -29,10 +29,12 @@ classes: name: stimulus_description description: Protocol/stimulus name for this patch-clamp dataset. range: text + required: true sweep_number: name: sweep_number description: Sweep number, allows to group different PatchClampSeries together. range: uint32 + required: false data: name: data description: Recorded voltage or current. @@ -74,6 +76,7 @@ classes: 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: @@ -131,7 +134,10 @@ classes: 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'. + ifabsent: string(volts) range: text + required: true + equals_string: volts value: name: value range: AnyType @@ -152,7 +158,10 @@ classes: name: stimulus_description description: An IZeroClampSeries has no stimulus, so this attribute is automatically set to "N/A" + ifabsent: string(N/A) range: text + required: true + equals_string: N/A bias_current: name: bias_current description: Bias current, in amps, fixed to 0.0. @@ -203,7 +212,10 @@ classes: 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 @@ -283,7 +295,10 @@ classes: 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 @@ -301,7 +316,10 @@ classes: unit: name: unit description: Unit of measurement for capacitance_fast, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -319,7 +337,10 @@ classes: unit: name: unit description: Unit of measurement for capacitance_fast, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -338,7 +359,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'. + ifabsent: string(hertz) range: text + required: true + equals_string: hertz value: name: value range: float32 @@ -357,7 +381,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_correction, which is fixed to 'percent'. + ifabsent: string(percent) range: text + required: true + equals_string: percent value: name: value range: float32 @@ -376,7 +403,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'. + ifabsent: string(percent) range: text + required: true + equals_string: percent value: name: value range: float32 @@ -395,7 +425,10 @@ classes: name: unit description: Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -414,7 +447,10 @@ classes: name: unit description: Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'. + ifabsent: string(ohms) range: text + required: true + equals_string: ohms value: name: value range: float32 @@ -450,7 +486,10 @@ classes: 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'. + ifabsent: string(volts) range: text + required: true + equals_string: volts value: name: value range: AnyType diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.image.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.image.yaml index 0b93830..bbbcfce 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.image.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.image.yaml @@ -144,6 +144,8 @@ classes: (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0]. range: int32 + required: true + multivalued: true value: name: value array: diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.misc.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.misc.yaml index e1d24e2..89d5ee0 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.misc.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.misc.yaml @@ -72,7 +72,9 @@ classes: 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'". + ifabsent: string(see 'feature_units') range: text + required: false value: name: value range: numeric @@ -200,7 +202,9 @@ classes: 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'. + ifabsent: string(no unit) range: text + required: true value: name: value array: @@ -458,3 +462,4 @@ classes: if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be between samples. range: float64 + required: false diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.ophys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.ophys.yaml index 15cb79a..9e86441 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.ophys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.ophys.yaml @@ -29,12 +29,14 @@ classes: name: pmt_gain description: Photomultiplier gain. range: float32 + required: false scan_line_rate: name: scan_line_rate description: Lines imaged per second. This is also stored in /general/optophysiology but is kept here as it is useful information for analysis, and so good to be stored w/ the actual data. range: float32 + required: false field_of_view: name: field_of_view description: Width, height and depth of image, or imaged area, in meters. @@ -436,12 +438,16 @@ classes: x = -500 to 499, y = -500 to 499 that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get from raw data acquisition pixel units to meters is 2/1000. + ifabsent: float(1.0) range: float32 + required: false unit: name: unit description: Base unit of measurement for working with the data. The default value is 'meters'. + ifabsent: string(meters) range: text + required: false value: name: value range: float32 @@ -474,7 +480,9 @@ classes: unit: name: unit description: Measurement units for origin_coords. The default value is 'meters'. + ifabsent: string(meters) range: text + required: true value: name: value range: float32 @@ -502,7 +510,9 @@ classes: unit: name: unit description: Measurement units for grid_spacing. The default value is 'meters'. + ifabsent: string(meters) range: text + required: true value: name: value range: float32 diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.retinotopy.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.retinotopy.yaml index 98473cb..cc06e90 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.retinotopy.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_3_0/core.nwb.retinotopy.yaml @@ -106,14 +106,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -137,14 +142,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -167,14 +177,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -198,14 +213,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -229,23 +249,30 @@ classes: description: Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value. range: int32 + required: true dimension: name: dimension description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true focal_depth: name: focal_depth description: Focal depth offset, in meters. range: float32 + required: true format: name: format description: Format of image. Right now only 'raw' is supported. range: text + required: true value: name: value array: @@ -269,10 +296,14 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true value: name: value array: @@ -296,19 +327,25 @@ classes: description: Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value range: int32 + required: true dimension: name: dimension description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true format: name: format description: Format of image. Right now only 'raw' is supported. range: text + required: true value: name: value array: diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.base.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.base.yaml index 77f05be..8ba1ca7 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.base.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.base.yaml @@ -73,10 +73,12 @@ classes: name: resolution description: Pixel resolution of the image, in pixels per centimeter. range: float32 + required: false description: name: description description: Description of the image. range: text + required: false value: name: value range: numeric @@ -132,13 +134,17 @@ classes: description: name: description description: Description of the time series. + ifabsent: string(no description) range: text + required: false comments: name: comments description: Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string. + ifabsent: string(no comments) range: text + required: false data: name: data description: Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first @@ -223,20 +229,25 @@ classes: 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 continuity: name: continuity description: Optionally describe the continuity of the data. Can be "continuous", @@ -249,6 +260,7 @@ classes: the way this data is interpreted, the way it is visualized, and what analysis methods are applicable. range: text + required: false value: name: value range: AnyType @@ -287,10 +299,14 @@ classes: name: rate description: Sampling rate, in Hz. range: float32 + required: true unit: name: unit description: Unit of measurement for time, which is fixed to 'seconds'. + ifabsent: string(seconds) range: text + required: true + equals_string: seconds value: name: value range: float64 @@ -338,6 +354,7 @@ classes: name: description description: Description of this collection of images. range: text + required: true image: name: image description: Images stored in this collection. diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.behavior.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.behavior.yaml index 1ed3fa3..322a4d9 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.behavior.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.behavior.yaml @@ -61,7 +61,9 @@ classes: 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'. + ifabsent: string(meters) range: text + required: false value: name: value range: numeric diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.device.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.device.yaml index fda15e6..fc320af 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.device.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.device.yaml @@ -28,8 +28,10 @@ classes: description: Description of the device (e.g., model, firmware version, processing software version, etc.) as free-form text. range: text + required: false manufacturer: name: manufacturer description: The name of the manufacturer of the device. range: text + required: false tree_root: true diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.ecephys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.ecephys.yaml index 43a8eb9..e572bd1 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.ecephys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.ecephys.yaml @@ -37,6 +37,7 @@ classes: at 300 Hz". If a non-standard filter type is used, provide as much detail about the filter properties as possible. range: text + required: false data: name: data description: Recorded voltage data. @@ -305,12 +306,14 @@ classes: name: description description: Description of this electrode group. range: text + required: true location: name: location description: Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible. range: text + required: true position: name: position description: stereotaxic or common framework coordinates diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.file.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.file.yaml index a1bd2ec..13bf8a1 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.file.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.file.yaml @@ -34,6 +34,7 @@ classes: name: notes description: Any notes the user has about the dataset being stored range: text + required: true tree_root: true NWBFile: name: NWBFile @@ -51,7 +52,10 @@ classes: name: nwb_version description: File version string. Use semantic versioning, e.g. 1.2.1. This will be the name of the format with trailing major, minor and patch numbers. + ifabsent: string(2.4.0) range: text + required: true + equals_string: 2.4.0 file_create_date: name: file_create_date description: 'A record of the date the file was created and of subsequent @@ -457,6 +461,7 @@ classes: name: file_name description: Name of script file. range: text + required: true value: name: value range: text diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.icephys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.icephys.yaml index 89b6b6d..346751e 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.icephys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.icephys.yaml @@ -29,10 +29,12 @@ classes: name: stimulus_description description: Protocol/stimulus name for this patch-clamp dataset. range: text + required: true sweep_number: name: sweep_number description: Sweep number, allows to group different PatchClampSeries together. range: uint32 + required: false data: name: data description: Recorded voltage or current. @@ -74,6 +76,7 @@ classes: 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: @@ -131,7 +134,10 @@ classes: 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'. + ifabsent: string(volts) range: text + required: true + equals_string: volts value: name: value range: AnyType @@ -152,7 +158,10 @@ classes: name: stimulus_description description: An IZeroClampSeries has no stimulus, so this attribute is automatically set to "N/A" + ifabsent: string(N/A) range: text + required: true + equals_string: N/A bias_current: name: bias_current description: Bias current, in amps, fixed to 0.0. @@ -203,7 +212,10 @@ classes: 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 @@ -283,7 +295,10 @@ classes: 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 @@ -301,7 +316,10 @@ classes: unit: name: unit description: Unit of measurement for capacitance_fast, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -319,7 +337,10 @@ classes: unit: name: unit description: Unit of measurement for capacitance_fast, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -338,7 +359,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'. + ifabsent: string(hertz) range: text + required: true + equals_string: hertz value: name: value range: float32 @@ -357,7 +381,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_correction, which is fixed to 'percent'. + ifabsent: string(percent) range: text + required: true + equals_string: percent value: name: value range: float32 @@ -376,7 +403,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'. + ifabsent: string(percent) range: text + required: true + equals_string: percent value: name: value range: float32 @@ -395,7 +425,10 @@ classes: name: unit description: Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -414,7 +447,10 @@ classes: name: unit description: Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'. + ifabsent: string(ohms) range: text + required: true + equals_string: ohms value: name: value range: float32 @@ -450,7 +486,10 @@ classes: 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'. + ifabsent: string(volts) range: text + required: true + equals_string: volts value: name: value range: AnyType @@ -573,7 +612,10 @@ classes: description: name: description description: Description of what is in this dynamic table. + ifabsent: string(Table for storing intracellular electrode related metadata.) range: text + required: true + equals_string: Table for storing intracellular electrode related metadata. electrode: name: electrode description: Column for storing the reference to the intracellular electrode. @@ -593,7 +635,10 @@ classes: description: name: description description: Description of what is in this dynamic table. + ifabsent: string(Table for storing intracellular stimulus related metadata.) range: text + required: true + equals_string: Table for storing intracellular stimulus related metadata. stimulus: name: stimulus annotations: @@ -621,7 +666,10 @@ classes: description: name: description description: Description of what is in this dynamic table. + ifabsent: string(Table for storing intracellular response related metadata.) range: text + required: true + equals_string: Table for storing intracellular response related metadata. response: name: response annotations: @@ -662,7 +710,14 @@ classes: name: description description: Description of the contents of this table. Inherited from AlignedDynamicTable and overwritten here to fix the value of the attribute. + ifabsent: string(A table to group together a stimulus and response from a + single electrode and a single simultaneous recording and for storing metadata + about the intracellular recording.) range: text + required: true + equals_string: A table to group together a stimulus and response from a single + electrode and a single simultaneous recording and for storing metadata about + the intracellular recording. electrodes: name: electrodes description: Table for storing intracellular electrode related metadata. @@ -734,6 +789,7 @@ classes: table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here. range: IntracellularRecordingsTable + required: true SequentialRecordingsTable: name: SequentialRecordingsTable description: A table for grouping different sequential recordings from the SimultaneousRecordingsTable @@ -796,6 +852,7 @@ classes: table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here. range: SimultaneousRecordingsTable + required: true RepetitionsTable: name: RepetitionsTable description: A table for grouping different sequential intracellular recordings @@ -849,6 +906,7 @@ classes: region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here. range: SequentialRecordingsTable + required: true ExperimentalConditionsTable: name: ExperimentalConditionsTable description: A table for grouping different intracellular recording repetitions @@ -898,3 +956,4 @@ classes: applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here. range: RepetitionsTable + required: true diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.image.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.image.yaml index dd88ab9..ac28a30 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.image.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.image.yaml @@ -145,6 +145,8 @@ classes: (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0]. range: int32 + required: true + multivalued: true value: name: value array: diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.misc.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.misc.yaml index d416ce7..97927d6 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.misc.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.misc.yaml @@ -72,7 +72,9 @@ classes: 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'". + ifabsent: string(see 'feature_units') range: text + required: false value: name: value range: numeric @@ -200,7 +202,9 @@ classes: 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'. + ifabsent: string(no unit) range: text + required: true value: name: value array: @@ -458,3 +462,4 @@ classes: if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be between samples. range: float64 + required: false diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.ophys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.ophys.yaml index 0e56b23..f59ef09 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.ophys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.ophys.yaml @@ -29,12 +29,14 @@ classes: name: pmt_gain description: Photomultiplier gain. range: float32 + required: false scan_line_rate: name: scan_line_rate description: Lines imaged per second. This is also stored in /general/optophysiology but is kept here as it is useful information for analysis, and so good to be stored w/ the actual data. range: float32 + required: false field_of_view: name: field_of_view description: Width, height and depth of image, or imaged area, in meters. @@ -436,12 +438,16 @@ classes: x = -500 to 499, y = -500 to 499 that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get from raw data acquisition pixel units to meters is 2/1000. + ifabsent: float(1.0) range: float32 + required: false unit: name: unit description: Base unit of measurement for working with the data. The default value is 'meters'. + ifabsent: string(meters) range: text + required: false value: name: value range: float32 @@ -474,7 +480,9 @@ classes: unit: name: unit description: Measurement units for origin_coords. The default value is 'meters'. + ifabsent: string(meters) range: text + required: true value: name: value range: float32 @@ -502,7 +510,9 @@ classes: unit: name: unit description: Measurement units for grid_spacing. The default value is 'meters'. + ifabsent: string(meters) range: text + required: true value: name: value range: float32 diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.retinotopy.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.retinotopy.yaml index d6318e1..f433f10 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.retinotopy.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_4_0/core.nwb.retinotopy.yaml @@ -106,14 +106,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -137,14 +142,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -167,14 +177,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -198,14 +213,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -229,23 +249,30 @@ classes: description: Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value. range: int32 + required: true dimension: name: dimension description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true focal_depth: name: focal_depth description: Focal depth offset, in meters. range: float32 + required: true format: name: format description: Format of image. Right now only 'raw' is supported. range: text + required: true value: name: value array: @@ -269,10 +296,14 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true value: name: value array: @@ -296,19 +327,25 @@ classes: description: Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value range: int32 + required: true dimension: name: dimension description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true format: name: format description: Format of image. Right now only 'raw' is supported. range: text + required: true value: name: value array: diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.base.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.base.yaml index 4204fe9..1a9d3a8 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.base.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.base.yaml @@ -73,10 +73,12 @@ classes: name: resolution description: Pixel resolution of the image, in pixels per centimeter. range: float32 + required: false description: name: description description: Description of the image. range: text + required: false value: name: value range: numeric @@ -152,13 +154,17 @@ classes: description: name: description description: Description of the time series. + ifabsent: string(no description) range: text + required: false comments: name: comments description: Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string. + ifabsent: string(no comments) range: text + required: false data: name: data description: Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first @@ -243,7 +249,9 @@ classes: 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 offset: name: offset description: Scalar to add to the data after scaling by 'conversion' to finalize @@ -252,19 +260,23 @@ classes: to re-center the data, and (b) specialized recording devices that naturally cause a scalar offset with respect to the true units. 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' and add 'offset'. range: text + required: true continuity: name: continuity description: Optionally describe the continuity of the data. Can be "continuous", @@ -277,6 +289,7 @@ classes: the way this data is interpreted, the way it is visualized, and what analysis methods are applicable. range: text + required: false value: name: value range: AnyType @@ -315,10 +328,14 @@ classes: name: rate description: Sampling rate, in Hz. range: float32 + required: true unit: name: unit description: Unit of measurement for time, which is fixed to 'seconds'. + ifabsent: string(seconds) range: text + required: true + equals_string: seconds value: name: value range: float64 @@ -368,6 +385,7 @@ classes: name: description description: Description of this collection of images. range: text + required: true image: name: image description: Images stored in this collection. diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.behavior.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.behavior.yaml index 8a994a2..e1d735b 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.behavior.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.behavior.yaml @@ -62,7 +62,9 @@ classes: value is 'meters'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion' and add 'offset'. + ifabsent: string(meters) range: text + required: false value: name: value range: numeric diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.device.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.device.yaml index 64b6e98..3f1acc9 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.device.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.device.yaml @@ -28,8 +28,10 @@ classes: description: Description of the device (e.g., model, firmware version, processing software version, etc.) as free-form text. range: text + required: false manufacturer: name: manufacturer description: The name of the manufacturer of the device. range: text + required: false tree_root: true diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.ecephys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.ecephys.yaml index bb13169..1562caf 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.ecephys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.ecephys.yaml @@ -37,6 +37,7 @@ classes: at 300 Hz". If a non-standard filter type is used, provide as much detail about the filter properties as possible. range: text + required: false data: name: data description: Recorded voltage data. @@ -305,12 +306,14 @@ classes: name: description description: Description of this electrode group. range: text + required: true location: name: location description: Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible. range: text + required: true position: name: position description: stereotaxic or common framework coordinates diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.file.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.file.yaml index eb94ee7..f468049 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.file.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.file.yaml @@ -34,6 +34,7 @@ classes: name: notes description: Any notes the user has about the dataset being stored range: text + required: true tree_root: true NWBFile: name: NWBFile @@ -51,7 +52,10 @@ classes: name: nwb_version description: File version string. Use semantic versioning, e.g. 1.2.1. This will be the name of the format with trailing major, minor and patch numbers. + ifabsent: string(2.5.0) range: text + required: true + equals_string: 2.5.0 file_create_date: name: file_create_date description: 'A record of the date the file was created and of subsequent @@ -458,6 +462,7 @@ classes: name: file_name description: Name of script file. range: text + required: true value: name: value range: text diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.icephys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.icephys.yaml index de10ce5..bdd9dd5 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.icephys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.icephys.yaml @@ -29,10 +29,12 @@ classes: name: stimulus_description description: Protocol/stimulus name for this patch-clamp dataset. range: text + required: true sweep_number: name: sweep_number description: Sweep number, allows to group different PatchClampSeries together. range: uint32 + required: false data: name: data description: Recorded voltage or current. @@ -74,6 +76,7 @@ classes: values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion' and add 'offset'. range: text + required: true value: name: value array: @@ -132,7 +135,10 @@ classes: 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 add 'offset'. + ifabsent: string(volts) range: text + required: true + equals_string: volts value: name: value range: AnyType @@ -153,7 +159,10 @@ classes: name: stimulus_description description: An IZeroClampSeries has no stimulus, so this attribute is automatically set to "N/A" + ifabsent: string(N/A) range: text + required: true + equals_string: N/A bias_current: name: bias_current description: Bias current, in amps, fixed to 0.0. @@ -205,7 +214,10 @@ classes: fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion' and add 'offset'. + ifabsent: string(amperes) range: text + required: true + equals_string: amperes value: name: value range: AnyType @@ -286,7 +298,10 @@ classes: fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion' and add 'offset'. + ifabsent: string(amperes) range: text + required: true + equals_string: amperes value: name: value range: AnyType @@ -304,7 +319,10 @@ classes: unit: name: unit description: Unit of measurement for capacitance_fast, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -322,7 +340,10 @@ classes: unit: name: unit description: Unit of measurement for capacitance_fast, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -341,7 +362,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'. + ifabsent: string(hertz) range: text + required: true + equals_string: hertz value: name: value range: float32 @@ -360,7 +384,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_correction, which is fixed to 'percent'. + ifabsent: string(percent) range: text + required: true + equals_string: percent value: name: value range: float32 @@ -379,7 +406,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'. + ifabsent: string(percent) range: text + required: true + equals_string: percent value: name: value range: float32 @@ -398,7 +428,10 @@ classes: name: unit description: Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -417,7 +450,10 @@ classes: name: unit description: Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'. + ifabsent: string(ohms) range: text + required: true + equals_string: ohms value: name: value range: float32 @@ -454,7 +490,10 @@ classes: 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 add 'offset'. + ifabsent: string(volts) range: text + required: true + equals_string: volts value: name: value range: AnyType @@ -583,7 +622,10 @@ classes: description: name: description description: Description of what is in this dynamic table. + ifabsent: string(Table for storing intracellular electrode related metadata.) range: text + required: true + equals_string: Table for storing intracellular electrode related metadata. electrode: name: electrode description: Column for storing the reference to the intracellular electrode. @@ -603,7 +645,10 @@ classes: description: name: description description: Description of what is in this dynamic table. + ifabsent: string(Table for storing intracellular stimulus related metadata.) range: text + required: true + equals_string: Table for storing intracellular stimulus related metadata. stimulus: name: stimulus annotations: @@ -631,7 +676,10 @@ classes: description: name: description description: Description of what is in this dynamic table. + ifabsent: string(Table for storing intracellular response related metadata.) range: text + required: true + equals_string: Table for storing intracellular response related metadata. response: name: response annotations: @@ -672,7 +720,14 @@ classes: name: description description: Description of the contents of this table. Inherited from AlignedDynamicTable and overwritten here to fix the value of the attribute. + ifabsent: string(A table to group together a stimulus and response from a + single electrode and a single simultaneous recording and for storing metadata + about the intracellular recording.) range: text + required: true + equals_string: A table to group together a stimulus and response from a single + electrode and a single simultaneous recording and for storing metadata about + the intracellular recording. electrodes: name: electrodes description: Table for storing intracellular electrode related metadata. @@ -744,6 +799,7 @@ classes: table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here. range: IntracellularRecordingsTable + required: true SequentialRecordingsTable: name: SequentialRecordingsTable description: A table for grouping different sequential recordings from the SimultaneousRecordingsTable @@ -806,6 +862,7 @@ classes: table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here. range: SimultaneousRecordingsTable + required: true RepetitionsTable: name: RepetitionsTable description: A table for grouping different sequential intracellular recordings @@ -859,6 +916,7 @@ classes: region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here. range: SequentialRecordingsTable + required: true ExperimentalConditionsTable: name: ExperimentalConditionsTable description: A table for grouping different intracellular recording repetitions @@ -908,3 +966,4 @@ classes: applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here. range: RepetitionsTable + required: true diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.image.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.image.yaml index c8a9988..0f6efd9 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.image.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.image.yaml @@ -145,6 +145,8 @@ classes: (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0]. range: int32 + required: true + multivalued: true value: name: value array: diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.misc.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.misc.yaml index e7204ff..f663994 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.misc.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.misc.yaml @@ -72,7 +72,9 @@ classes: 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'". + ifabsent: string(see 'feature_units') range: text + required: false value: name: value range: numeric @@ -200,7 +202,9 @@ classes: 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'. + ifabsent: string(no unit) range: text + required: true value: name: value array: @@ -458,3 +462,4 @@ classes: if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be between samples. range: float64 + required: false diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.ophys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.ophys.yaml index 80df95c..2c94d34 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.ophys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.ophys.yaml @@ -29,12 +29,14 @@ classes: name: pmt_gain description: Photomultiplier gain. range: float32 + required: false scan_line_rate: name: scan_line_rate description: Lines imaged per second. This is also stored in /general/optophysiology but is kept here as it is useful information for analysis, and so good to be stored w/ the actual data. range: float32 + required: false field_of_view: name: field_of_view description: Width, height and depth of image, or imaged area, in meters. @@ -436,12 +438,16 @@ classes: x = -500 to 499, y = -500 to 499 that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get from raw data acquisition pixel units to meters is 2/1000. + ifabsent: float(1.0) range: float32 + required: false unit: name: unit description: Base unit of measurement for working with the data. The default value is 'meters'. + ifabsent: string(meters) range: text + required: false value: name: value range: float32 @@ -474,7 +480,9 @@ classes: unit: name: unit description: Measurement units for origin_coords. The default value is 'meters'. + ifabsent: string(meters) range: text + required: true value: name: value range: float32 @@ -502,7 +510,9 @@ classes: unit: name: unit description: Measurement units for grid_spacing. The default value is 'meters'. + ifabsent: string(meters) range: text + required: true value: name: value range: float32 diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.retinotopy.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.retinotopy.yaml index 31a6dd3..3a624b1 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.retinotopy.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_5_0/core.nwb.retinotopy.yaml @@ -106,14 +106,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -137,14 +142,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -167,14 +177,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -198,14 +213,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -229,23 +249,30 @@ classes: description: Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value. range: int32 + required: true dimension: name: dimension description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true focal_depth: name: focal_depth description: Focal depth offset, in meters. range: float32 + required: true format: name: format description: Format of image. Right now only 'raw' is supported. range: text + required: true value: name: value array: @@ -269,10 +296,14 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true value: name: value array: @@ -296,19 +327,25 @@ classes: description: Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value range: int32 + required: true dimension: name: dimension description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true format: name: format description: Format of image. Right now only 'raw' is supported. range: text + required: true value: name: value array: diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.base.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.base.yaml index 6439b29..ad3eeb6 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.base.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.base.yaml @@ -73,10 +73,12 @@ classes: name: resolution description: Pixel resolution of the image, in pixels per centimeter. range: float32 + required: false description: name: description description: Description of the image. range: text + required: false value: name: value range: numeric @@ -152,13 +154,17 @@ classes: description: name: description description: Description of the time series. + ifabsent: string(no description) range: text + required: false comments: name: comments description: Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string. + ifabsent: string(no comments) range: text + required: false data: name: data description: Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first @@ -243,7 +249,9 @@ classes: 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 offset: name: offset description: Scalar to add to the data after scaling by 'conversion' to finalize @@ -252,19 +260,23 @@ classes: to re-center the data, and (b) specialized recording devices that naturally cause a scalar offset with respect to the true units. 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' and add 'offset'. range: text + required: true continuity: name: continuity description: Optionally describe the continuity of the data. Can be "continuous", @@ -277,6 +289,7 @@ classes: the way this data is interpreted, the way it is visualized, and what analysis methods are applicable. range: text + required: false value: name: value range: AnyType @@ -315,10 +328,14 @@ classes: name: rate description: Sampling rate, in Hz. range: float32 + required: true unit: name: unit description: Unit of measurement for time, which is fixed to 'seconds'. + ifabsent: string(seconds) range: text + required: true + equals_string: seconds value: name: value range: float64 @@ -368,6 +385,7 @@ classes: name: description description: Description of this collection of images. range: text + required: true image: name: image description: Images stored in this collection. diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.behavior.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.behavior.yaml index 9174b6a..650a4cd 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.behavior.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.behavior.yaml @@ -62,7 +62,9 @@ classes: value is 'meters'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion' and add 'offset'. + ifabsent: string(meters) range: text + required: false value: name: value range: numeric diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.device.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.device.yaml index a01cb4b..4dd254b 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.device.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.device.yaml @@ -28,8 +28,10 @@ classes: description: Description of the device (e.g., model, firmware version, processing software version, etc.) as free-form text. range: text + required: false manufacturer: name: manufacturer description: The name of the manufacturer of the device. range: text + required: false tree_root: true diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.ecephys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.ecephys.yaml index 7145c03..3fab077 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.ecephys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.ecephys.yaml @@ -37,6 +37,7 @@ classes: at 300 Hz". If a non-standard filter type is used, provide as much detail about the filter properties as possible. range: text + required: false data: name: data description: Recorded voltage data. @@ -305,12 +306,14 @@ classes: name: description description: Description of this electrode group. range: text + required: true location: name: location description: Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible. range: text + required: true position: name: position description: stereotaxic or common framework coordinates diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.file.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.file.yaml index 3ddb452..f5d5d49 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.file.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.file.yaml @@ -34,6 +34,7 @@ classes: name: notes description: Any notes the user has about the dataset being stored range: text + required: true tree_root: true NWBFile: name: NWBFile @@ -51,7 +52,10 @@ classes: name: nwb_version description: File version string. Use semantic versioning, e.g. 1.2.1. This will be the name of the format with trailing major, minor and patch numbers. + ifabsent: string(2.6.0) range: text + required: true + equals_string: 2.6.0 file_create_date: name: file_create_date description: 'A record of the date the file was created and of subsequent @@ -458,6 +462,7 @@ classes: name: file_name description: Name of script file. range: text + required: true value: name: value range: text @@ -817,7 +822,9 @@ classes: name: reference description: Age is with reference to this event. Can be 'birth' or 'gestational'. If reference is omitted, 'birth' is implied. + ifabsent: string(birth) range: text + required: false value: name: value range: text diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.icephys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.icephys.yaml index c24417f..b3181bc 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.icephys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.icephys.yaml @@ -29,10 +29,12 @@ classes: name: stimulus_description description: Protocol/stimulus name for this patch-clamp dataset. range: text + required: true sweep_number: name: sweep_number description: Sweep number, allows to group different PatchClampSeries together. range: uint32 + required: false data: name: data description: Recorded voltage or current. @@ -74,6 +76,7 @@ classes: values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion' and add 'offset'. range: text + required: true value: name: value array: @@ -132,7 +135,10 @@ classes: 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 add 'offset'. + ifabsent: string(volts) range: text + required: true + equals_string: volts value: name: value range: AnyType @@ -153,7 +159,10 @@ classes: name: stimulus_description description: An IZeroClampSeries has no stimulus, so this attribute is automatically set to "N/A" + ifabsent: string(N/A) range: text + required: true + equals_string: N/A bias_current: name: bias_current description: Bias current, in amps, fixed to 0.0. @@ -205,7 +214,10 @@ classes: fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion' and add 'offset'. + ifabsent: string(amperes) range: text + required: true + equals_string: amperes value: name: value range: AnyType @@ -286,7 +298,10 @@ classes: fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion' and add 'offset'. + ifabsent: string(amperes) range: text + required: true + equals_string: amperes value: name: value range: AnyType @@ -304,7 +319,10 @@ classes: unit: name: unit description: Unit of measurement for capacitance_fast, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -322,7 +340,10 @@ classes: unit: name: unit description: Unit of measurement for capacitance_fast, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -341,7 +362,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'. + ifabsent: string(hertz) range: text + required: true + equals_string: hertz value: name: value range: float32 @@ -360,7 +384,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_correction, which is fixed to 'percent'. + ifabsent: string(percent) range: text + required: true + equals_string: percent value: name: value range: float32 @@ -379,7 +406,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'. + ifabsent: string(percent) range: text + required: true + equals_string: percent value: name: value range: float32 @@ -398,7 +428,10 @@ classes: name: unit description: Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -417,7 +450,10 @@ classes: name: unit description: Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'. + ifabsent: string(ohms) range: text + required: true + equals_string: ohms value: name: value range: float32 @@ -454,7 +490,10 @@ classes: 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 add 'offset'. + ifabsent: string(volts) range: text + required: true + equals_string: volts value: name: value range: AnyType @@ -583,7 +622,10 @@ classes: description: name: description description: Description of what is in this dynamic table. + ifabsent: string(Table for storing intracellular electrode related metadata.) range: text + required: true + equals_string: Table for storing intracellular electrode related metadata. electrode: name: electrode description: Column for storing the reference to the intracellular electrode. @@ -603,7 +645,10 @@ classes: description: name: description description: Description of what is in this dynamic table. + ifabsent: string(Table for storing intracellular stimulus related metadata.) range: text + required: true + equals_string: Table for storing intracellular stimulus related metadata. stimulus: name: stimulus annotations: @@ -631,7 +676,10 @@ classes: description: name: description description: Description of what is in this dynamic table. + ifabsent: string(Table for storing intracellular response related metadata.) range: text + required: true + equals_string: Table for storing intracellular response related metadata. response: name: response annotations: @@ -672,7 +720,14 @@ classes: name: description description: Description of the contents of this table. Inherited from AlignedDynamicTable and overwritten here to fix the value of the attribute. + ifabsent: string(A table to group together a stimulus and response from a + single electrode and a single simultaneous recording and for storing metadata + about the intracellular recording.) range: text + required: true + equals_string: A table to group together a stimulus and response from a single + electrode and a single simultaneous recording and for storing metadata about + the intracellular recording. electrodes: name: electrodes description: Table for storing intracellular electrode related metadata. @@ -744,6 +799,7 @@ classes: table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here. range: IntracellularRecordingsTable + required: true SequentialRecordingsTable: name: SequentialRecordingsTable description: A table for grouping different sequential recordings from the SimultaneousRecordingsTable @@ -806,6 +862,7 @@ classes: table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here. range: SimultaneousRecordingsTable + required: true RepetitionsTable: name: RepetitionsTable description: A table for grouping different sequential intracellular recordings @@ -859,6 +916,7 @@ classes: region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here. range: SequentialRecordingsTable + required: true ExperimentalConditionsTable: name: ExperimentalConditionsTable description: A table for grouping different intracellular recording repetitions @@ -908,3 +966,4 @@ classes: applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here. range: RepetitionsTable + required: true diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.image.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.image.yaml index 4d3fcd0..45bd0a3 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.image.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.image.yaml @@ -145,6 +145,8 @@ classes: (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0]. range: int32 + required: true + multivalued: true value: name: value array: diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.misc.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.misc.yaml index 07c142e..56f8824 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.misc.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.misc.yaml @@ -72,7 +72,9 @@ classes: 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'". + ifabsent: string(see 'feature_units') range: text + required: false value: name: value range: numeric @@ -200,7 +202,9 @@ classes: 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'. + ifabsent: string(no unit) range: text + required: true value: name: value array: @@ -458,3 +462,4 @@ classes: if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be between samples. range: float64 + required: false diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.ophys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.ophys.yaml index 877b532..00607b0 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.ophys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.ophys.yaml @@ -29,28 +29,34 @@ classes: name: pmt_gain description: Photomultiplier gain. range: float32 + required: false scan_line_rate: name: scan_line_rate description: Lines imaged per second. This is also stored in /general/optophysiology but is kept here as it is useful information for analysis, and so good to be stored w/ the actual data. range: float32 + required: false exposure_time: name: exposure_time description: Exposure time of the sample; often the inverse of the frequency. range: float32 + required: false binning: name: binning description: Amount of pixels combined into 'bins'; could be 1, 2, 4, 8, etc. range: uint8 + required: false power: name: power description: Power of the excitation in mW, if known. range: float32 + required: false intensity: name: intensity description: Intensity of the excitation in mW/mm^2, if known. range: float32 + required: false imaging_plane: name: imaging_plane annotations: @@ -76,12 +82,14 @@ classes: name: pmt_gain description: Photomultiplier gain. range: float32 + required: false scan_line_rate: name: scan_line_rate description: Lines imaged per second. This is also stored in /general/optophysiology but is kept here as it is useful information for analysis, and so good to be stored w/ the actual data. range: float32 + required: false field_of_view: name: field_of_view description: Width, height and depth of image, or imaged area, in meters. @@ -483,12 +491,16 @@ classes: x = -500 to 499, y = -500 to 499 that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get from raw data acquisition pixel units to meters is 2/1000. + ifabsent: float(1.0) range: float32 + required: false unit: name: unit description: Base unit of measurement for working with the data. The default value is 'meters'. + ifabsent: string(meters) range: text + required: false value: name: value range: float32 @@ -521,7 +533,9 @@ classes: unit: name: unit description: Measurement units for origin_coords. The default value is 'meters'. + ifabsent: string(meters) range: text + required: true value: name: value range: float32 @@ -549,7 +563,9 @@ classes: unit: name: unit description: Measurement units for grid_spacing. The default value is 'meters'. + ifabsent: string(meters) range: text + required: true value: name: value range: float32 diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.retinotopy.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.retinotopy.yaml index e913c0d..dc790f3 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.retinotopy.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_6_0_alpha/core.nwb.retinotopy.yaml @@ -106,14 +106,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -137,14 +142,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -167,14 +177,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -198,14 +213,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -229,23 +249,30 @@ classes: description: Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value. range: int32 + required: true dimension: name: dimension description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true focal_depth: name: focal_depth description: Focal depth offset, in meters. range: float32 + required: true format: name: format description: Format of image. Right now only 'raw' is supported. range: text + required: true value: name: value array: @@ -269,10 +296,14 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true value: name: value array: @@ -296,19 +327,25 @@ classes: description: Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value range: int32 + required: true dimension: name: dimension description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true format: name: format description: Format of image. Right now only 'raw' is supported. range: text + required: true value: name: value array: diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.base.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.base.yaml index 0bd5bd0..ec53dc1 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.base.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.base.yaml @@ -73,10 +73,12 @@ classes: name: resolution description: Pixel resolution of the image, in pixels per centimeter. range: float32 + required: false description: name: description description: Description of the image. range: text + required: false value: name: value range: numeric @@ -152,13 +154,17 @@ classes: description: name: description description: Description of the time series. + ifabsent: string(no description) range: text + required: false comments: name: comments description: Human-readable comments about the TimeSeries. This second descriptive field can be used to store additional information, or descriptive information if the primary description field is populated with a computer-readable string. + ifabsent: string(no comments) range: text + required: false data: name: data description: Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first @@ -243,7 +249,9 @@ classes: 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 offset: name: offset description: Scalar to add to the data after scaling by 'conversion' to finalize @@ -252,19 +260,23 @@ classes: to re-center the data, and (b) specialized recording devices that naturally cause a scalar offset with respect to the true units. 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' and add 'offset'. range: text + required: true continuity: name: continuity description: Optionally describe the continuity of the data. Can be "continuous", @@ -277,6 +289,7 @@ classes: the way this data is interpreted, the way it is visualized, and what analysis methods are applicable. range: text + required: false value: name: value range: AnyType @@ -315,10 +328,14 @@ classes: name: rate description: Sampling rate, in Hz. range: float32 + required: true unit: name: unit description: Unit of measurement for time, which is fixed to 'seconds'. + ifabsent: string(seconds) range: text + required: true + equals_string: seconds value: name: value range: float64 @@ -368,6 +385,7 @@ classes: name: description description: Description of this collection of images. range: text + required: true image: name: image description: Images stored in this collection. diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.behavior.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.behavior.yaml index eabccf6..0df664e 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.behavior.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.behavior.yaml @@ -62,7 +62,9 @@ classes: value is 'meters'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion' and add 'offset'. + ifabsent: string(meters) range: text + required: false value: name: value range: numeric diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.device.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.device.yaml index 7719f95..ab2fc92 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.device.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.device.yaml @@ -28,8 +28,10 @@ classes: description: Description of the device (e.g., model, firmware version, processing software version, etc.) as free-form text. range: text + required: false manufacturer: name: manufacturer description: The name of the manufacturer of the device. range: text + required: false tree_root: true diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.ecephys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.ecephys.yaml index 378f644..8485a7d 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.ecephys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.ecephys.yaml @@ -37,6 +37,7 @@ classes: at 300 Hz". If a non-standard filter type is used, provide as much detail about the filter properties as possible. range: text + required: false data: name: data description: Recorded voltage data. @@ -305,12 +306,14 @@ classes: name: description description: Description of this electrode group. range: text + required: true location: name: location description: Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible. range: text + required: true position: name: position description: stereotaxic or common framework coordinates diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.file.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.file.yaml index a0978ba..1b56d9d 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.file.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.file.yaml @@ -34,6 +34,7 @@ classes: name: notes description: Any notes the user has about the dataset being stored range: text + required: true tree_root: true NWBFile: name: NWBFile @@ -51,7 +52,10 @@ classes: name: nwb_version description: File version string. Use semantic versioning, e.g. 1.2.1. This will be the name of the format with trailing major, minor and patch numbers. + ifabsent: string(2.7.0) range: text + required: true + equals_string: 2.7.0 file_create_date: name: file_create_date description: 'A record of the date the file was created and of subsequent @@ -460,6 +464,7 @@ classes: name: file_name description: Name of script file. range: text + required: true value: name: value range: text @@ -819,7 +824,9 @@ classes: name: reference description: Age is with reference to this event. Can be 'birth' or 'gestational'. If reference is omitted, 'birth' is implied. + ifabsent: string(birth) range: text + required: false value: name: value range: text diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.icephys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.icephys.yaml index 3ad625d..710ba36 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.icephys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.icephys.yaml @@ -29,10 +29,12 @@ classes: name: stimulus_description description: Protocol/stimulus name for this patch-clamp dataset. range: text + required: true sweep_number: name: sweep_number description: Sweep number, allows to group different PatchClampSeries together. range: uint32 + required: false data: name: data description: Recorded voltage or current. @@ -74,6 +76,7 @@ classes: values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion' and add 'offset'. range: text + required: true value: name: value array: @@ -132,7 +135,10 @@ classes: 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 add 'offset'. + ifabsent: string(volts) range: text + required: true + equals_string: volts value: name: value range: AnyType @@ -153,7 +159,10 @@ classes: name: stimulus_description description: An IZeroClampSeries has no stimulus, so this attribute is automatically set to "N/A" + ifabsent: string(N/A) range: text + required: true + equals_string: N/A bias_current: name: bias_current description: Bias current, in amps, fixed to 0.0. @@ -205,7 +214,10 @@ classes: fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion' and add 'offset'. + ifabsent: string(amperes) range: text + required: true + equals_string: amperes value: name: value range: AnyType @@ -286,7 +298,10 @@ classes: fixed to 'amperes'. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion' and add 'offset'. + ifabsent: string(amperes) range: text + required: true + equals_string: amperes value: name: value range: AnyType @@ -304,7 +319,10 @@ classes: unit: name: unit description: Unit of measurement for capacitance_fast, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -322,7 +340,10 @@ classes: unit: name: unit description: Unit of measurement for capacitance_fast, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -341,7 +362,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'. + ifabsent: string(hertz) range: text + required: true + equals_string: hertz value: name: value range: float32 @@ -360,7 +384,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_correction, which is fixed to 'percent'. + ifabsent: string(percent) range: text + required: true + equals_string: percent value: name: value range: float32 @@ -379,7 +406,10 @@ classes: name: unit description: Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'. + ifabsent: string(percent) range: text + required: true + equals_string: percent value: name: value range: float32 @@ -398,7 +428,10 @@ classes: name: unit description: Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'. + ifabsent: string(farads) range: text + required: true + equals_string: farads value: name: value range: float32 @@ -417,7 +450,10 @@ classes: name: unit description: Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'. + ifabsent: string(ohms) range: text + required: true + equals_string: ohms value: name: value range: float32 @@ -454,7 +490,10 @@ classes: 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 add 'offset'. + ifabsent: string(volts) range: text + required: true + equals_string: volts value: name: value range: AnyType @@ -583,7 +622,10 @@ classes: description: name: description description: Description of what is in this dynamic table. + ifabsent: string(Table for storing intracellular electrode related metadata.) range: text + required: true + equals_string: Table for storing intracellular electrode related metadata. electrode: name: electrode description: Column for storing the reference to the intracellular electrode. @@ -603,7 +645,10 @@ classes: description: name: description description: Description of what is in this dynamic table. + ifabsent: string(Table for storing intracellular stimulus related metadata.) range: text + required: true + equals_string: Table for storing intracellular stimulus related metadata. stimulus: name: stimulus annotations: @@ -645,7 +690,10 @@ classes: description: name: description description: Description of what is in this dynamic table. + ifabsent: string(Table for storing intracellular response related metadata.) range: text + required: true + equals_string: Table for storing intracellular response related metadata. response: name: response annotations: @@ -686,7 +734,14 @@ classes: name: description description: Description of the contents of this table. Inherited from AlignedDynamicTable and overwritten here to fix the value of the attribute. + ifabsent: string(A table to group together a stimulus and response from a + single electrode and a single simultaneous recording and for storing metadata + about the intracellular recording.) range: text + required: true + equals_string: A table to group together a stimulus and response from a single + electrode and a single simultaneous recording and for storing metadata about + the intracellular recording. electrodes: name: electrodes description: Table for storing intracellular electrode related metadata. @@ -758,6 +813,7 @@ classes: table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here. range: IntracellularRecordingsTable + required: true SequentialRecordingsTable: name: SequentialRecordingsTable description: A table for grouping different sequential recordings from the SimultaneousRecordingsTable @@ -820,6 +876,7 @@ classes: table region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here. range: SimultaneousRecordingsTable + required: true RepetitionsTable: name: RepetitionsTable description: A table for grouping different sequential intracellular recordings @@ -873,6 +930,7 @@ classes: region applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here. range: SequentialRecordingsTable + required: true ExperimentalConditionsTable: name: ExperimentalConditionsTable description: A table for grouping different intracellular recording repetitions @@ -922,3 +980,4 @@ classes: applies to. This specializes the attribute inherited from DynamicTableRegion to fix the type of table that can be referenced here. range: RepetitionsTable + required: true diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.image.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.image.yaml index b87f670..cac5d73 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.image.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.image.yaml @@ -145,6 +145,8 @@ classes: (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0]. range: int32 + required: true + multivalued: true value: name: value array: diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.misc.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.misc.yaml index bedbbeb..9395fd9 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.misc.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.misc.yaml @@ -72,7 +72,9 @@ classes: 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'". + ifabsent: string(see 'feature_units') range: text + required: false value: name: value range: numeric @@ -200,7 +202,9 @@ classes: 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'. + ifabsent: string(no unit) range: text + required: true value: name: value array: @@ -458,3 +462,4 @@ classes: if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be between samples. range: float64 + required: false diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.ophys.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.ophys.yaml index 2e5036c..478cc92 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.ophys.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.ophys.yaml @@ -29,28 +29,34 @@ classes: name: pmt_gain description: Photomultiplier gain. range: float32 + required: false scan_line_rate: name: scan_line_rate description: Lines imaged per second. This is also stored in /general/optophysiology but is kept here as it is useful information for analysis, and so good to be stored w/ the actual data. range: float32 + required: false exposure_time: name: exposure_time description: Exposure time of the sample; often the inverse of the frequency. range: float32 + required: false binning: name: binning description: Amount of pixels combined into 'bins'; could be 1, 2, 4, 8, etc. range: uint8 + required: false power: name: power description: Power of the excitation in mW, if known. range: float32 + required: false intensity: name: intensity description: Intensity of the excitation in mW/mm^2, if known. range: float32 + required: false imaging_plane: name: imaging_plane annotations: @@ -76,12 +82,14 @@ classes: name: pmt_gain description: Photomultiplier gain. range: float32 + required: false scan_line_rate: name: scan_line_rate description: Lines imaged per second. This is also stored in /general/optophysiology but is kept here as it is useful information for analysis, and so good to be stored w/ the actual data. range: float32 + required: false field_of_view: name: field_of_view description: Width, height and depth of image, or imaged area, in meters. @@ -483,12 +491,16 @@ classes: x = -500 to 499, y = -500 to 499 that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get from raw data acquisition pixel units to meters is 2/1000. + ifabsent: float(1.0) range: float32 + required: false unit: name: unit description: Base unit of measurement for working with the data. The default value is 'meters'. + ifabsent: string(meters) range: text + required: false value: name: value range: float32 @@ -521,7 +533,9 @@ classes: unit: name: unit description: Measurement units for origin_coords. The default value is 'meters'. + ifabsent: string(meters) range: text + required: true value: name: value range: float32 @@ -549,7 +563,9 @@ classes: unit: name: unit description: Measurement units for grid_spacing. The default value is 'meters'. + ifabsent: string(meters) range: text + required: true value: name: value range: float32 diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.retinotopy.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.retinotopy.yaml index f3173d3..6416821 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.retinotopy.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/core/v2_7_0/core.nwb.retinotopy.yaml @@ -106,14 +106,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -137,14 +142,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -167,14 +177,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -198,14 +213,19 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true unit: name: unit description: Unit that axis data is stored in (e.g., degrees). range: text + required: true value: name: value array: @@ -229,23 +249,30 @@ classes: description: Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value. range: int32 + required: true dimension: name: dimension description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true focal_depth: name: focal_depth description: Focal depth offset, in meters. range: float32 + required: true format: name: format description: Format of image. Right now only 'raw' is supported. range: text + required: true value: name: value array: @@ -269,10 +296,14 @@ classes: description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true value: name: value array: @@ -296,19 +327,25 @@ classes: description: Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value range: int32 + required: true dimension: name: dimension description: 'Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.' range: int32 + required: true + multivalued: true field_of_view: name: field_of_view description: Size of viewing area, in meters. range: float32 + required: true + multivalued: true format: name: format description: Format of image. Right now only 'raw' is supported. range: text + required: true value: name: value array: diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_0/hdmf-common.sparse.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_0/hdmf-common.sparse.yaml index 6c1dbe1..8220620 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_0/hdmf-common.sparse.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_0/hdmf-common.sparse.yaml @@ -23,7 +23,13 @@ classes: shape: name: shape description: the shape of this sparse matrix + array: + dimensions: + - alias: 'null' + exact_cardinality: 2 range: int + required: true + multivalued: false indices: name: indices description: column indices diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_0/hdmf-common.table.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_0/hdmf-common.table.yaml index f7a2a0a..27a272c 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_0/hdmf-common.table.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_0/hdmf-common.table.yaml @@ -34,6 +34,7 @@ classes: name: target description: Target dataset that this index applies to. range: Data + required: true tree_root: true VectorData: name: VectorData @@ -55,6 +56,7 @@ classes: name: description description: Description of what these vectors represent. range: text + required: true tree_root: true VectorIndex: name: VectorIndex @@ -71,6 +73,7 @@ classes: name: target description: Reference to the target dataset that this index applies to. range: VectorData + required: true tree_root: true ElementIdentifiers: name: ElementIdentifiers @@ -106,10 +109,12 @@ classes: description: Reference to the DynamicTable object that this region applies to. range: DynamicTable + required: true description: name: description description: Description of what this table region points to. range: text + required: true tree_root: true Container: name: Container @@ -155,10 +160,13 @@ classes: description: The names of the columns in this table. This should be used to specify an order to the columns. range: text + required: true + multivalued: true description: name: description description: Description of what is in this dynamic table. range: text + required: true id: name: id description: Array of unique identifiers for the rows of this dynamic table. diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_2/hdmf-common.sparse.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_2/hdmf-common.sparse.yaml index 5c825a8..42a1170 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_2/hdmf-common.sparse.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_2/hdmf-common.sparse.yaml @@ -23,7 +23,13 @@ classes: shape: name: shape description: the shape of this sparse matrix + array: + dimensions: + - alias: 'null' + exact_cardinality: 2 range: int + required: true + multivalued: false indices: name: indices description: column indices diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_2/hdmf-common.table.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_2/hdmf-common.table.yaml index dec9fc7..fe82d7d 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_2/hdmf-common.table.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_2/hdmf-common.table.yaml @@ -34,6 +34,7 @@ classes: name: target description: Target dataset that this index applies to. range: Data + required: true tree_root: true VectorData: name: VectorData @@ -55,6 +56,7 @@ classes: name: description description: Description of what these vectors represent. range: text + required: true tree_root: true VectorIndex: name: VectorIndex @@ -71,6 +73,7 @@ classes: name: target description: Reference to the target dataset that this index applies to. range: VectorData + required: true tree_root: true ElementIdentifiers: name: ElementIdentifiers @@ -106,10 +109,12 @@ classes: description: Reference to the DynamicTable object that this region applies to. range: DynamicTable + required: true description: name: description description: Description of what this table region points to. range: text + required: true tree_root: true Container: name: Container @@ -155,10 +160,13 @@ classes: description: The names of the columns in this table. This should be used to specify an order to the columns. range: text + required: true + multivalued: true description: name: description description: Description of what is in this dynamic table. range: text + required: true id: name: id description: Array of unique identifiers for the rows of this dynamic table. diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_3/hdmf-common.sparse.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_3/hdmf-common.sparse.yaml index a7b2bb8..bdb5f39 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_3/hdmf-common.sparse.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_3/hdmf-common.sparse.yaml @@ -23,7 +23,13 @@ classes: shape: name: shape description: the shape of this sparse matrix + array: + dimensions: + - alias: 'null' + exact_cardinality: 2 range: int + required: true + multivalued: false indices: name: indices description: column indices diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_3/hdmf-common.table.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_3/hdmf-common.table.yaml index ec35619..4285b03 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_3/hdmf-common.table.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_1_3/hdmf-common.table.yaml @@ -34,6 +34,7 @@ classes: name: target description: Target dataset that this index applies to. range: Data + required: true tree_root: true VectorData: name: VectorData @@ -55,6 +56,7 @@ classes: name: description description: Description of what these vectors represent. range: text + required: true value: name: value range: AnyType @@ -93,6 +95,7 @@ classes: name: target description: Reference to the target dataset that this index applies to. range: VectorData + required: true value: name: value array: @@ -134,10 +137,12 @@ classes: description: Reference to the DynamicTable object that this region applies to. range: DynamicTable + required: true description: name: description description: Description of what this table region points to. range: text + required: true tree_root: true Container: name: Container @@ -183,10 +188,13 @@ classes: description: The names of the columns in this table. This should be used to specify an order to the columns. range: text + required: true + multivalued: true description: name: description description: Description of what is in this dynamic table. range: text + required: true id: name: id description: Array of unique identifiers for the rows of this dynamic table. diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_5_0/hdmf-common.sparse.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_5_0/hdmf-common.sparse.yaml index c5ec31d..24ea8fd 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_5_0/hdmf-common.sparse.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_5_0/hdmf-common.sparse.yaml @@ -29,6 +29,8 @@ classes: description: The shape (number of rows, number of columns) of this sparse matrix. range: uint + required: true + multivalued: true indices: name: indices description: The column indices. diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_5_0/hdmf-common.table.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_5_0/hdmf-common.table.yaml index aaef099..9ed7bc1 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_5_0/hdmf-common.table.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_5_0/hdmf-common.table.yaml @@ -33,6 +33,7 @@ classes: name: description description: Description of what these vectors represent. range: text + required: true value: name: value range: AnyType @@ -73,6 +74,7 @@ classes: name: target description: Reference to the target dataset that this index applies to. range: VectorData + required: true tree_root: true ElementIdentifiers: name: ElementIdentifiers @@ -108,10 +110,12 @@ classes: description: Reference to the DynamicTable object that this region applies to. range: DynamicTable + required: true description: name: description description: Description of what this table region points to. range: text + required: true tree_root: true DynamicTable: name: DynamicTable @@ -144,10 +148,13 @@ classes: description: The names of the columns in this table. This should be used to specify an order to the columns. range: text + required: true + multivalued: true description: name: description description: Description of what is in this dynamic table. range: text + required: true id: name: id description: Array of unique identifiers for the rows of this dynamic table. diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_8_0/hdmf-common.sparse.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_8_0/hdmf-common.sparse.yaml index 74e9c04..842d1d6 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_8_0/hdmf-common.sparse.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_8_0/hdmf-common.sparse.yaml @@ -29,6 +29,8 @@ classes: description: The shape (number of rows, number of columns) of this sparse matrix. range: uint + required: true + multivalued: true indices: name: indices description: The column indices. diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_8_0/hdmf-common.table.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_8_0/hdmf-common.table.yaml index d3398c4..938ab2d 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_8_0/hdmf-common.table.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_common/v1_8_0/hdmf-common.table.yaml @@ -33,6 +33,7 @@ classes: name: description description: Description of what these vectors represent. range: text + required: true value: name: value range: AnyType @@ -73,6 +74,7 @@ classes: name: target description: Reference to the target dataset that this index applies to. range: VectorData + required: true tree_root: true ElementIdentifiers: name: ElementIdentifiers @@ -108,10 +110,12 @@ classes: description: Reference to the DynamicTable object that this region applies to. range: DynamicTable + required: true description: name: description description: Description of what this table region points to. range: text + required: true tree_root: true DynamicTable: name: DynamicTable @@ -144,10 +148,13 @@ classes: description: The names of the columns in this table. This should be used to specify an order to the columns. range: text + required: true + multivalued: true description: name: description description: Description of what is in this dynamic table. range: text + required: true id: name: id description: Array of unique identifiers for the rows of this dynamic table. diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_experimental/v0_1_0/hdmf-experimental.experimental.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_experimental/v0_1_0/hdmf-experimental.experimental.yaml index c14e264..0a31806 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_experimental/v0_1_0/hdmf-experimental.experimental.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_experimental/v0_1_0/hdmf-experimental.experimental.yaml @@ -28,4 +28,5 @@ classes: description: Reference to the VectorData object that contains the enumerable elements range: VectorData + required: true tree_root: true diff --git a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_experimental/v0_5_0/hdmf-experimental.experimental.yaml b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_experimental/v0_5_0/hdmf-experimental.experimental.yaml index 7bc2244..c6cf1d4 100644 --- a/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_experimental/v0_5_0/hdmf-experimental.experimental.yaml +++ b/nwb_linkml/src/nwb_linkml/schema/linkml/hdmf_experimental/v0_5_0/hdmf-experimental.experimental.yaml @@ -28,4 +28,5 @@ classes: description: Reference to the VectorData object that contains the enumerable elements range: VectorData + required: true tree_root: true