Data descriptors#
Data descriptors#
- Pydantic model esgvoc.api.data_descriptors.ActivityCMIP7[source]#
Bases:
PlainTermDataDescriptorIdentifier of the CMIP activity to which a dataset belongs
Examples: “PMIP”, “CMIP”, “CFMIP”, “ScenarioMIP”
An ‘activity’ refers to a coordinated set of modeling experiments designed to address specific scientific questions or objectives. Activities generally have the suffix “MIP”, for “model intercomparison project” (even though they’re not referred to as projects within CMIP CVs).
Activity DRS names should not include a phase. For example, the activity should always be ScenarioMIP, not ScenarioMIP6, ScenarioMIP7 etc.
It is now considered essential for each
Experimentto be associated with a singleActivity. However, this was not followed in CMIP6, which significantly complicates definition and validation of the schemas for these two classes.Show JSON schema
{ "$defs": { "ActivityCMIP7": { "additionalProperties": true, "description": "Identifier of the CMIP activity to which a dataset belongs\n\nExamples: \"PMIP\", \"CMIP\", \"CFMIP\", \"ScenarioMIP\"\n\nAn 'activity' refers to a coordinated set of modeling experiments\ndesigned to address specific scientific questions or objectives.\nActivities generally have the suffix \"MIP\",\nfor \"model intercomparison project\"\n(even though they're not referred to as projects within CMIP CVs).\n\nActivity DRS names should not include a phase.\nFor example, the activity should always be ScenarioMIP,\nnot ScenarioMIP6, ScenarioMIP7 etc.\n\nIt is now considered essential for each :py:class:`Experiment`\nto be associated with a single :py:class:`Activity`.\nHowever, this was not followed in CMIP6,\nwhich significantly complicates definition and validation\nof the schemas for these two classes.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "experiments": { "anyOf": [ { "items": { "oneOf": [ { "$ref": "#/$defs/ExperimentLegacy" }, { "$ref": "#/$defs/ExperimentCMIP7" }, { "$ref": "#/$defs/ExperimentBase" } ] }, "type": "array" }, { "items": { "type": "string" }, "type": "array" } ], "title": "Experiments" }, "urls": { "items": { "format": "uri", "maxLength": 2083, "minLength": 1, "type": "string" }, "title": "Urls", "type": "array" } }, "required": [ "id", "type", "drs_name", "experiments", "urls" ], "title": "ActivityCMIP7", "type": "object" }, "ActivityLegacy": { "additionalProperties": true, "description": "Legacy activity model for CMIP6 and earlier versions.\n\nThis version only contains basic fields (id, type, description)\nwithout the additional requirements introduced in CMIP7.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" } }, "required": [ "id", "type" ], "title": "ActivityLegacy", "type": "object" }, "ComponentType": { "additionalProperties": true, "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "ComponentType", "type": "object" }, "ExperimentBase": { "additionalProperties": true, "description": "Base experiment model for Universe data.\n\nThis loose model accepts experiment data that doesn't fully conform to either\nExperimentLegacy or ExperimentCMIP7. Used as fallback for incomplete experiments.\nOnly contains fields common to both Legacy and CMIP7 models.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "tier": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Tier" }, "min_number_yrs_per_sim": { "anyOf": [ { "type": "number" }, { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Min Number Yrs Per Sim" }, "required_model_components": { "anyOf": [ { "items": { "anyOf": [ { "$ref": "#/$defs/ComponentType" }, { "type": "string" } ] }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Required Model Components" }, "additional_allowed_model_components": { "items": { "anyOf": [ { "$ref": "#/$defs/ComponentType" }, { "type": "string" } ] }, "title": "Additional Allowed Model Components", "type": "array" } }, "required": [ "id", "type", "drs_name" ], "title": "ExperimentBase", "type": "object" }, "ExperimentCMIP7": { "additionalProperties": true, "description": "Identifier of the CMIP experiment to which a dataset belongs/a dataset is derived from\n\nExamples: \"historical\", \"piControl\", \"ssp126\"\n\nAn 'experiment' refers to a specific, controlled simulation\nconducted using climate models to investigate particular aspects of the Earth's climate system.\nThese experiments are designed with set parameters, such as initial conditions,\nexternal forcings (like greenhouse gas concentrations or solar radiation),\nand duration, to explore and understand climate behavior under various conditions.\n\nIt is now considered essential for each :py:class:`Experiment`\nto be associated with a single :py:class:`Activity`.\nHowever, this was not followed in CMIP6,\nwhich significantly complicates definition and validation\nof the schemas for these two classes.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "activity": { "title": "Activity", "type": "string" }, "additional_allowed_model_components": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "items": { "$ref": "#/$defs/ComponentType" }, "type": "array" } ], "title": "Additional Allowed Model Components" }, "branch_information": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Branch Information" }, "end_timestamp": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "End Timestamp" }, "min_ensemble_size": { "title": "Min Ensemble Size", "type": "integer" }, "min_number_yrs_per_sim": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Min Number Yrs Per Sim" }, "parent_activity": { "anyOf": [ { "oneOf": [ { "$ref": "#/$defs/ActivityCMIP7" }, { "$ref": "#/$defs/ActivityLegacy" } ] }, { "type": "string" }, { "type": "null" } ], "title": "Parent Activity" }, "parent_experiment": { "anyOf": [ { "type": "string" }, { "oneOf": [ { "$ref": "#/$defs/ExperimentLegacy" }, { "$ref": "#/$defs/ExperimentCMIP7" }, { "$ref": "#/$defs/ExperimentBase" } ] }, { "type": "null" } ], "title": "Parent Experiment" }, "parent_mip_era": { "anyOf": [ { "$ref": "#/$defs/MipEra" }, { "type": "string" }, { "type": "null" } ], "title": "Parent Mip Era" }, "required_model_components": { "items": { "anyOf": [ { "$ref": "#/$defs/ComponentType" }, { "type": "string" } ] }, "title": "Required Model Components", "type": "array" }, "start_timestamp": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "title": "Start Timestamp" }, "tier": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Tier" } }, "required": [ "id", "type", "drs_name", "activity", "additional_allowed_model_components", "branch_information", "end_timestamp", "min_ensemble_size", "min_number_yrs_per_sim", "parent_activity", "parent_experiment", "parent_mip_era", "required_model_components", "start_timestamp", "tier" ], "title": "ExperimentCMIP7", "type": "object" }, "ExperimentLegacy": { "additionalProperties": true, "description": "An 'experiment' refers to a specific, controlled simulation conducted using climate models to investigate particular aspects of the Earth's climate system. These experiments are designed with set parameters, such as initial conditions, external forcings (like greenhouse gas concentrations or solar radiation), and duration, to explore and understand climate behavior under various scenarios and conditions.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "experiment_id": { "title": "Experiment Id", "type": "string" }, "activity_id": { "items": { "type": "string" }, "title": "Activity Id", "type": "array" }, "experiment": { "title": "Experiment", "type": "string" }, "tier": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Tier" }, "sub_experiment_id": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Sub Experiment Id" }, "start_year": { "anyOf": [ { "type": "string" }, { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Start Year" }, "end_year": { "anyOf": [ { "type": "string" }, { "type": "integer" }, { "type": "null" } ], "default": null, "title": "End Year" }, "min_number_yrs_per_sim": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Min Number Yrs Per Sim" }, "parent_activity_id": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Parent Activity Id" }, "parent_experiment_id": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Parent Experiment Id" }, "required_model_components": { "anyOf": [ { "items": { "anyOf": [ { "$ref": "#/$defs/ComponentType" }, { "type": "string" } ] }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Required Model Components" }, "additional_allowed_model_components": { "items": { "anyOf": [ { "$ref": "#/$defs/ComponentType" }, { "type": "string" } ] }, "title": "Additional Allowed Model Components", "type": "array" } }, "required": [ "id", "type", "drs_name", "experiment_id", "activity_id", "experiment", "tier" ], "title": "ExperimentLegacy", "type": "object" }, "MipEra": { "additionalProperties": true, "description": "Label that identifies the MIP era to which a dataset belongs\n\nExamples: \"CMIP6\", \"CMIP7\"\n\nThe MIP era is useful to distinguish among experiments performed during different CMIP phases\nbut with differences in experimental protocol in each phase.\nFor example, the \"historical\" experiments appear in multiple phases of CMIP\nbut have different input forcings in each.\nThis difference can be identified using the MIP era data descriptor.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "url": { "format": "uri", "maxLength": 2083, "minLength": 1, "title": "Url", "type": "string" } }, "required": [ "id", "type", "drs_name", "url" ], "title": "MipEra", "type": "object" } }, "$ref": "#/$defs/ActivityCMIP7" }
- Validators:
name_must_not_end_in_number»drs_name
- field experiments: list[Experiment] | list[str] [Required][source]#
Experiments ‘sponsored’ by this activity
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.Archive[source]#
Bases:
PlainTermDataDescriptorShow JSON schema
{ "title": "Archive", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.AreaLabel[source]#
Bases:
PlainTermDataDescriptorLabel that describes a specific area sampling approach
Examples: “lnd”, “air”, “sea”, “u”
This label is used as the area component of a branded variable’s suffix (see
BrandedSuffix).Show JSON schema
{ "title": "AreaLabel", "description": "Label that describes a specific area sampling approach\n\nExamples: \"lnd\", \"air\", \"sea\", \"u\"\n\nThis label is used as the area component of a branded variable's suffix\n(see :py:class:`BrandedSuffix`).", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "cf_area_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Cf Area Type" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name", "cf_area_type" ] }
- field cf_area_type: str | None [Required][source]#
CF-conventions area type (https://cfconventions.org/Data/area-type-table/current/build/area-type-table.html).
This is set to “u” (“unmasked”) when all areas are sampled i.e. no mask is applied to the data. For underlying details and logic, please see [Taylor et al., 2025](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).
If None, there is no CF-conventions area type associated with this area label.
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.Arrangement[source]#
Bases:
PlainTermDataDescriptorHorizontal grid arrangement (EMD v1.0 Section 7.3).
Options: arakawa_a, arakawa_b, arakawa_c, arakawa_d, arakawa_e
A grid arrangement describes the relative locations of mass- and velocity-related quantities on the computed grid (for instance Collins et al. (2013), and for unstructured grids Thuburn et al. (2009)).
Show JSON schema
{ "title": "Arrangement", "description": "Horizontal grid arrangement (EMD v1.0 Section 7.3).\n\nOptions: arakawa_a, arakawa_b, arakawa_c, arakawa_d, arakawa_e\n\nA grid arrangement describes the relative locations of mass- and velocity-related quantities\non the computed grid (for instance Collins et al. (2013), and for unstructured grids\nThuburn et al. (2009)).", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.BrandedSuffix[source]#
Bases:
CompositeTermDataDescriptorThe suffix of a branded variable.
Examples: “tavg-h2m-hxy-u”, “tpt-u-hxy-u”, “tavg-p19-hxy-air”
A branded variable is composed of two parts. The first part is the root variable (see
Variable). The second is the suffix, i.e. the component described here. The suffix captures all the information about the time sampling, horizontal sampling, vertical sampling and area masking of the variable.The suffix is composed of the following components:
For underlying details and logic, please see [Taylor et al., 2025](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).
Show JSON schema
{ "title": "BrandedSuffix", "description": "The suffix of a branded variable.\n\nExamples: \"tavg-h2m-hxy-u\", \"tpt-u-hxy-u\", \"tavg-p19-hxy-air\"\n\nA branded variable is composed of two parts.\nThe first part is the root variable (see :py:class:`Variable`).\nThe second is the suffix, i.e. the component described here.\nThe suffix captures all the information\nabout the time sampling, horizontal sampling, vertical sampling\nand area masking of the variable.\n\nThe suffix is composed of the following components:\n\n#. :py:class:`TemporalLabel`\n#. :py:class:`VerticalLabel`\n#. :py:class:`HorizontalLabel`\n#. :py:class:`AreaLabel`\n\nFor underlying details and logic, please see\n[Taylor et al., 2025](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "separator": { "title": "Separator", "type": "string" }, "parts": { "items": { "$ref": "#/$defs/CompositeTermPart" }, "title": "Parts", "type": "array" } }, "$defs": { "CompositeTermPart": { "additionalProperties": true, "description": "A reference to a term, part of a composite term.", "properties": { "id": { "anyOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Id" }, "type": { "title": "Type", "type": "string" }, "is_required": { "title": "Is Required", "type": "boolean" } }, "required": [ "type", "is_required" ], "title": "CompositeTermPart", "type": "object" } }, "additionalProperties": true, "required": [ "id", "type", "separator", "parts" ] }
- field parts: list[CompositeTermPart] [Required][source]#
The components.
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.BrandedVariable[source]#
Bases:
CompositeTermDataDescriptorA climate-related quantity or measurement, including information about sampling.
Examples: “tas_tavg-h2m-hxy-u”, “pr_tpt-u-hxy-u”, “ua_tavg-p19-hxy-air”
The concept of a branded variable was introduced in CMIP7. A branded variable is composed of two parts. The first part is the root variable (see
Variable). The second is the suffix (seeBrandedSuffix).For underlying details and logic, please see [Taylor et al., 2025](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).
Show JSON schema
{ "title": "BrandedVariable", "description": "A climate-related quantity or measurement, including information about sampling.\n\nExamples: \"tas_tavg-h2m-hxy-u\", \"pr_tpt-u-hxy-u\", \"ua_tavg-p19-hxy-air\"\n\nThe concept of a branded variable was introduced in CMIP7.\nA branded variable is composed of two parts.\nThe first part is the root variable (see :py:class:`Variable`).\nThe second is the suffix (see :py:class:`BrandedSuffix`).\n\nFor underlying details and logic, please see\n[Taylor et al., 2025](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "separator": { "title": "Separator", "type": "string" }, "parts": { "items": { "$ref": "#/$defs/CompositeTermPart" }, "title": "Parts", "type": "array" } }, "$defs": { "CompositeTermPart": { "additionalProperties": true, "description": "A reference to a term, part of a composite term.", "properties": { "id": { "anyOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Id" }, "type": { "title": "Type", "type": "string" }, "is_required": { "title": "Is Required", "type": "boolean" } }, "required": [ "type", "is_required" ], "title": "CompositeTermPart", "type": "object" } }, "additionalProperties": true, "required": [ "id", "type", "separator", "parts" ] }
- field parts: list[CompositeTermPart] [Required][source]#
The components.
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.Calendar[source]#
Bases:
PlainTermDataDescriptorShow JSON schema
{ "title": "Calendar", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.CellVariableType[source]#
Bases:
PlainTermDataDescriptorCell variable type (EMD v1.0 Section 7.4).
Options: mass, x_velocity, y_velocity, velocity
Types of physical variables that are carried at, or representative of conditions at, cells of a horizontal subgrid.
Show JSON schema
{ "title": "CellVariableType", "description": "Cell variable type (EMD v1.0 Section 7.4).\n\nOptions: mass, x_velocity, y_velocity, velocity\n\nTypes of physical variables that are carried at, or representative of conditions at,\ncells of a horizontal subgrid.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.CitationUrl[source]#
Bases:
PatternTermDataDescriptorShow JSON schema
{ "title": "CitationUrl", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "regex": { "title": "Regex", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "regex" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.ComponentType[source]#
Bases:
PlainTermDataDescriptorShow JSON schema
{ "title": "ComponentType", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.CompositeTermDDex[source]#
Bases:
CompositeTermDataDescriptorShow JSON schema
{ "title": "CompositeTermDDex", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "separator": { "title": "Separator", "type": "string" }, "parts": { "items": { "$ref": "#/$defs/CompositeTermPart" }, "title": "Parts", "type": "array" } }, "$defs": { "CompositeTermPart": { "additionalProperties": true, "description": "A reference to a term, part of a composite term.", "properties": { "id": { "anyOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Id" }, "type": { "title": "Type", "type": "string" }, "is_required": { "title": "Is Required", "type": "boolean" } }, "required": [ "type", "is_required" ], "title": "CompositeTermPart", "type": "object" } }, "additionalProperties": true, "required": [ "id", "type", "separator", "parts" ] }
- field parts: list[CompositeTermPart] [Required][source]#
The components.
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.Contact[source]#
Bases:
PatternTermDataDescriptorShow JSON schema
{ "title": "Contact", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "regex": { "title": "Regex", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "regex" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.Convention[source]#
Bases:
PlainTermDataDescriptorConventions governing the data
Examples: “CF-1.10”, “CF-1.12”
This data descriptor is actually defined by the CF-conventions. However, it is often used in a more specific and restrictive form within WCRP activities. To support this possibility, this data descriptor must also be defined within esgvoc.
The most commonly specified conventions are the climate and forecast metadata conventions (https://cfconventions.org/). Other conventions can also be specified in the ‘Conventions’ attribute of netCDF files/other metadata. The different conventions are usually separated by a whitespace. Within esgvoc, the ‘components’ (i.e. whitespace separated bits) are all that is specified. If users wish to combine them, they can, but esgvoc does not treat this as either a pattern or composite term.
Show JSON schema
{ "title": "Convention", "description": "Conventions governing the data\n\nExamples: \"CF-1.10\", \"CF-1.12\"\n\nThis data descriptor is actually defined by the CF-conventions.\nHowever, it is often used in a more specific and restrictive form\nwithin WCRP activities.\nTo support this possibility, this data descriptor must also be defined within esgvoc.\n\nThe most commonly specified conventions are the\nclimate and forecast metadata conventions (https://cfconventions.org/).\nOther conventions can also be specified in the 'Conventions'\nattribute of netCDF files/other metadata.\nThe different conventions are usually separated by a whitespace.\nWithin esgvoc, the 'components' (i.e. whitespace separated bits)\nare all that is specified.\nIf users wish to combine them, they can,\nbut esgvoc does not treat this as either a pattern or composite term.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.Coordinate[source]#
Bases:
PlainTermDataDescriptorNative vertical grid coordinate type.
The coordinate types are all CF standard names (except where indicated) with the same definitions. See section 5.2 Native vertical grid properties.
Options for the native vertical grid Coordinate property:
none - (Not a standard name) There is no vertical dimension.
height - Height is the vertical distance above the earth’s surface.
geopotential_height - Geopotential height is the geopotential divided by the standard acceleration due to gravity.
air_pressure - Air pressure is the pressure that exists in the medium of air.
air_potential_temperature - Air potential temperature is the temperature a parcel of air would have if moved dry adiabatically to a standard pressure.
atmosphere_ln_pressure_coordinate - Parametric atmosphere natural log pressure coordinate.
atmosphere_sigma_coordinate - Parametric atmosphere sigma coordinate.
atmosphere_hybrid_sigma_pressure_coordinate - Parametric atmosphere hybrid sigma pressure coordinate.
atmosphere_hybrid_height_coordinate - Parametric atmosphere hybrid height coordinate.
atmosphere_sleve_coordinate - Parametric atmosphere smooth vertical level coordinate.
depth - Depth is the vertical distance below the earth’s surface.
sea_water_pressure - Sea water pressure is the pressure that exists in the medium of sea water.
sea_water_potential_temperature - Sea water potential temperature is the temperature a parcel of sea water would have if moved adiabatically to sea level pressure.
ocean_sigma_coordinate - Parametric ocean sigma coordinate.
ocean_s_coordinate - Parametric ocean s-coordinate.
ocean_s_coordinate_g1 - Parametric ocean s-coordinate, generic form 1.
ocean_s_coordinate_g2 - Parametric ocean s-coordinate, generic form 2.
ocean_sigma_z_coordinate - Parametric ocean sigma over z coordinate.
ocean_double_sigma_coordinate - Parametric ocean double sigma coordinate.
land_ice_sigma_coordinate - Land ice (glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves) sigma coordinate.
z* - (Not a standard name) The z* coordinate of Adcroft and Campin (2004).
Show JSON schema
{ "title": "Coordinate", "description": "Native vertical grid coordinate type.\n\nThe coordinate types are all CF standard names (except where indicated)\nwith the same definitions. See section 5.2 Native vertical grid properties.\n\nOptions for the native vertical grid Coordinate property:\n\n* **none** - (Not a standard name) There is no vertical dimension.\n* **height** - Height is the vertical distance above the earth's surface.\n* **geopotential_height** - Geopotential height is the geopotential divided by the standard acceleration due to gravity.\n* **air_pressure** - Air pressure is the pressure that exists in the medium of air.\n* **air_potential_temperature** - Air potential temperature is the temperature a parcel of air would have if moved dry adiabatically to a standard pressure.\n* **atmosphere_ln_pressure_coordinate** - Parametric atmosphere natural log pressure coordinate.\n* **atmosphere_sigma_coordinate** - Parametric atmosphere sigma coordinate.\n* **atmosphere_hybrid_sigma_pressure_coordinate** - Parametric atmosphere hybrid sigma pressure coordinate.\n* **atmosphere_hybrid_height_coordinate** - Parametric atmosphere hybrid height coordinate.\n* **atmosphere_sleve_coordinate** - Parametric atmosphere smooth vertical level coordinate.\n* **depth** - Depth is the vertical distance below the earth's surface.\n* **sea_water_pressure** - Sea water pressure is the pressure that exists in the medium of sea water.\n* **sea_water_potential_temperature** - Sea water potential temperature is the temperature a parcel of sea water would have if moved adiabatically to sea level pressure.\n* **ocean_sigma_coordinate** - Parametric ocean sigma coordinate.\n* **ocean_s_coordinate** - Parametric ocean s-coordinate.\n* **ocean_s_coordinate_g1** - Parametric ocean s-coordinate, generic form 1.\n* **ocean_s_coordinate_g2** - Parametric ocean s-coordinate, generic form 2.\n* **ocean_sigma_z_coordinate** - Parametric ocean sigma over z coordinate.\n* **ocean_double_sigma_coordinate** - Parametric ocean double sigma coordinate.\n* **land_ice_sigma_coordinate** - Land ice (glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves) sigma coordinate.\n* **z*** - (Not a standard name) The z* coordinate of Adcroft and Campin (2004).", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.CreationDate[source]#
Bases:
PatternTermDataDescriptorDate (more specifically timestamp) that the file was created
Examples: “2025-08-21T04:23:12Z”, “2024-04-11T14:03:10Z”
Note that the examples above assume a regex of d{4}-d{2}-d{2}Td{2}:d{2}:d{2}Z (this matches ISO 8601 timestamps in UTC). If you use a different regex, different examples would be needed.
Show JSON schema
{ "title": "CreationDate", "description": "Date (more specifically timestamp) that the file was created\n\nExamples: \"2025-08-21T04:23:12Z\", \"2024-04-11T14:03:10Z\"\n\nNote that the examples above assume a `regex` of\n`\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z`\n(this matches ISO 8601 timestamps in UTC).\nIf you use a different regex, different examples would be needed.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "regex": { "title": "Regex", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "regex" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.DRSSpecs[source]#
Bases:
PlainTermDataDescriptorData reference syntax (DRS) specification
Examples: “MIP-DRS7”
Identifier of the the data reference syntax used to name files, define directory trees, and uniquely identify datasets. This data descriptor is self-referential: for a given set of CVs (e.g. CMIP7 CVs), it can only have a single value.
In practice, this term was a nice idea, but the way things are architected at the moment, we can’t really exploit it. As background, the idea was that multiple projects could use the same DRS e.g. CMIP8 could use the same DRS as CMIP7 if it wanted. In practice, project_specs is currently defined per project by esgvoc so there is no way for one project to point at another project’s specs to specify the DRS. The way of using the same DRS would be to simply copy the project specs. I actually don’t think this is a bad thing (new projects spin up slowly so copying one file is not a big issue). It just means that this label points basically nowhere, there is no ‘DRS registry’ so people can say, “I have DRS MIP-DRS7, so I go here and look up exactly what that means, then off I go”. However, it does open up the possibility of such centralisation/re-use in future so while it’s a bit redundant now, having it adds only minor extra work and may be useful so I guess we just go with it.
Show JSON schema
{ "title": "DRSSpecs", "description": "Data reference syntax (DRS) specification\n\nExamples: \"MIP-DRS7\"\n\nIdentifier of the the data reference syntax used to name files,\ndefine directory trees, and uniquely identify datasets.\nThis data descriptor is self-referential:\nfor a given set of CVs (e.g. CMIP7 CVs),\nit can only have a single value.\n\nIn practice, this term was a nice idea,\nbut the way things are architected at the moment,\nwe can't really exploit it.\nAs background, the idea was that multiple projects could use the same DRS\ne.g. CMIP8 could use the same DRS as CMIP7 if it wanted.\nIn practice, `project_specs` is currently defined per project by esgvoc\nso there is no way for one project to point at another project's specs\nto specify the DRS.\nThe way of using the same DRS would be to simply copy the project specs.\nI actually don't think this is a bad thing\n(new projects spin up slowly so copying one file is not a big issue).\nIt just means that this label points basically nowhere,\nthere is no 'DRS registry' so people can say,\n\"I have DRS MIP-DRS7, so I go here and look up exactly what that means,\nthen off I go\".\nHowever, it does open up the possibility of such centralisation/re-use in future\nso while it's a bit redundant now, having it adds only minor extra work\nand may be useful so I guess we just go with it.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.DataSpecsVersion[source]#
Bases:
PlainTermDataDescriptorData specifications version number
Examples: “MIPDS7-2025p10p1”
The data specifications describe the overall set of data specifications used when writing the dataset. This version number captures exactly which set of data specifications are consistent (or intended to be consistent) with this dataset. The DRS values can’t contain ‘.’ so we use ‘p’ instead. To go from a DRS value back to a standard version, get everything after the hyphen (everything before the hyphen is a prefix) then replace “p” with “.”. Something like, drs_name.split(‘-‘)[-1].replace(‘p’, ‘.’). (At the moment, exactly what this means is still vague, particularly for CMIP7. When it solidifies, more details and examples will be added here.)
Show JSON schema
{ "title": "DataSpecsVersion", "description": "Data specifications version number\n\nExamples: \"MIPDS7-2025p10p1\"\n\nThe data specifications describe the overall set of data specifications\nused when writing the dataset.\nThis version number captures exactly which set of data specifications\nare consistent (or intended to be consistent) with this dataset.\nThe DRS values can't contain '.' so we use 'p' instead.\nTo go from a DRS value back to a standard version,\nget everything after the hyphen (everything before the hyphen is a prefix)\nthen replace \"p\" with \".\".\nSomething like, `drs_name.split('-')[-1].replace('p', '.')`.\n(At the moment, exactly what this means is still vague, particularly for CMIP7.\nWhen it solidifies, more details and examples will be added here.)", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.Date[source]#
Bases:
PatternTermDataDescriptorShow JSON schema
{ "title": "Date", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "regex": { "title": "Regex", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "regex" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.DirectoryDate[source]#
Bases:
PatternTermDataDescriptorDate included as part of data paths
Examples: “20240513”, “20230202”, “20250109”
In practice, this acts as a version ID for the dataset. For most CMIP projects, it is the only version ID. For some (e.g. input4MIPs), it is another (redundant) version ID on top of other versioning conventions used by the project.
More detail than you could ever want on why this only in the directory, and not a file attribute, can be found in WCRP-CMIP/CMIP7-CVs#172.
Show JSON schema
{ "title": "DirectoryDate", "description": "Date included as part of data paths\n\nExamples: \"20240513\", \"20230202\", \"20250109\"\n\nIn practice, this acts as a version ID for the dataset.\nFor most CMIP projects, it is the only version ID.\nFor some (e.g. input4MIPs), it is another (redundant) version ID\non top of other versioning conventions used by the project.\n\nMore detail than you could ever want on why this only in the directory,\nand not a file attribute, can be found in\nhttps://github.com/WCRP-CMIP/CMIP7-CVs/issues/172.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "regex": { "title": "Regex", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "regex" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.EMDModelComponent[source]#
Bases:
PlainTermDataDescriptorModel component description (EMD v1.0 Section 3).
Properties that provide a description of individual model components.
Eight model components are defined that somewhat independently account for different sets of interactive processes: aerosol, atmosphere, atmospheric chemistry, land surface, land ice, ocean, ocean biogeochemistry, and sea ice.
Show JSON schema
{ "title": "EMDModelComponent", "description": "Model component description (EMD v1.0 Section 3).\n\nProperties that provide a description of individual model components.\n\nEight model components are defined that somewhat independently account for different\nsets of interactive processes: aerosol, atmosphere, atmospheric chemistry, land surface,\nland ice, ocean, ocean biogeochemistry, and sea ice.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "description": "A scientific overview of the model component. The description should summarise the key processes simulated by the model component.", "minLength": 1, "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "component": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/ComponentType" } ], "description": "The type of the model component. Taken from 7.1 component CV.", "title": "Component" }, "name": { "description": "The name of the model component.", "minLength": 1, "title": "Name", "type": "string" }, "family": { "description": "The model component's 'family' name. Use 'none' to indicate that there is no such family.", "minLength": 1, "title": "Family", "type": "string" }, "references": { "description": "One or more references to published work for the model component.", "items": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/Reference" } ] }, "minItems": 1, "title": "References", "type": "array" }, "code_base": { "description": "A URL (preferably for a DOI) for the source code for the model component. Set to 'private' if not publicly available.", "minLength": 1, "title": "Code Base", "type": "string" }, "embedded_in": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/ComponentType" }, { "type": "null" } ], "default": null, "description": "The host model component (identified by its component property) in which this component is 'embedded'. Taken from 7.1 component CV. Omit when this component is coupled with other components.", "title": "Embedded In" }, "coupled_with": { "anyOf": [ { "items": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/ComponentType" } ] }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The model components (identified by their component properties) with which this component is 'coupled'. Taken from 7.1 component CV. Omit when this component is embedded in another component.", "title": "Coupled With" }, "horizontal_computational_grid": { "$ref": "#/$defs/HorizontalComputationalGrid", "description": "A standardised description of the model component's horizontal computational grid." }, "vertical_computational_grid": { "$ref": "#/$defs/VerticalComputationalGrid", "description": "A standardised description of the model component's vertical computational grid." } }, "$defs": { "Arrangement": { "additionalProperties": true, "description": "Horizontal grid arrangement (EMD v1.0 Section 7.3).\n\nOptions: arakawa_a, arakawa_b, arakawa_c, arakawa_d, arakawa_e\n\nA grid arrangement describes the relative locations of mass- and velocity-related quantities\non the computed grid (for instance Collins et al. (2013), and for unstructured grids\nThuburn et al. (2009)).", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "Arrangement", "type": "object" }, "CellVariableType": { "additionalProperties": true, "description": "Cell variable type (EMD v1.0 Section 7.4).\n\nOptions: mass, x_velocity, y_velocity, velocity\n\nTypes of physical variables that are carried at, or representative of conditions at,\ncells of a horizontal subgrid.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "CellVariableType", "type": "object" }, "ComponentType": { "additionalProperties": true, "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "ComponentType", "type": "object" }, "Coordinate": { "additionalProperties": true, "description": "Native vertical grid coordinate type.\n\nThe coordinate types are all CF standard names (except where indicated)\nwith the same definitions. See section 5.2 Native vertical grid properties.\n\nOptions for the native vertical grid Coordinate property:\n\n* **none** - (Not a standard name) There is no vertical dimension.\n* **height** - Height is the vertical distance above the earth's surface.\n* **geopotential_height** - Geopotential height is the geopotential divided by the standard acceleration due to gravity.\n* **air_pressure** - Air pressure is the pressure that exists in the medium of air.\n* **air_potential_temperature** - Air potential temperature is the temperature a parcel of air would have if moved dry adiabatically to a standard pressure.\n* **atmosphere_ln_pressure_coordinate** - Parametric atmosphere natural log pressure coordinate.\n* **atmosphere_sigma_coordinate** - Parametric atmosphere sigma coordinate.\n* **atmosphere_hybrid_sigma_pressure_coordinate** - Parametric atmosphere hybrid sigma pressure coordinate.\n* **atmosphere_hybrid_height_coordinate** - Parametric atmosphere hybrid height coordinate.\n* **atmosphere_sleve_coordinate** - Parametric atmosphere smooth vertical level coordinate.\n* **depth** - Depth is the vertical distance below the earth's surface.\n* **sea_water_pressure** - Sea water pressure is the pressure that exists in the medium of sea water.\n* **sea_water_potential_temperature** - Sea water potential temperature is the temperature a parcel of sea water would have if moved adiabatically to sea level pressure.\n* **ocean_sigma_coordinate** - Parametric ocean sigma coordinate.\n* **ocean_s_coordinate** - Parametric ocean s-coordinate.\n* **ocean_s_coordinate_g1** - Parametric ocean s-coordinate, generic form 1.\n* **ocean_s_coordinate_g2** - Parametric ocean s-coordinate, generic form 2.\n* **ocean_sigma_z_coordinate** - Parametric ocean sigma over z coordinate.\n* **ocean_double_sigma_coordinate** - Parametric ocean double sigma coordinate.\n* **land_ice_sigma_coordinate** - Land ice (glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves) sigma coordinate.\n* **z*** - (Not a standard name) The z* coordinate of Adcroft and Campin (2004).", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "Coordinate", "type": "object" }, "GridMapping": { "additionalProperties": true, "description": "Grid mapping (EMD v1.0 Section 7.7).\n\nOptions: latitude_longitude, lambert_conformal_conic, etc.\n\nThe name of the coordinate reference system of the horizontal coordinates.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "GridMapping", "type": "object" }, "GridType": { "additionalProperties": true, "description": "Horizontal grid type (EMD v1.0 Section 7.6).\n\nOptions: regular_latitude_longitude, regular_gaussian, reduced_gaussian, tripolar, etc.\n\nA grid type describes the method for distributing grid points over the sphere.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "GridType", "type": "object" }, "HorizontalComputationalGrid": { "additionalProperties": true, "description": "Horizontal computational grid description (EMD v1.0 Section 4.1.1).\n\nA model component's horizontal computational grid is composed of one or more\nhorizontal subgrids, on which different sets of variables are calculated.\nWhen the computational grid relies on more than one subgrid, it is referred to\nas a \"staggered\" grid. For most staggered grids, the velocity-related variables\nare calculated on a subgrid offset from the mass-related variables (e.g. pressure,\ntemperature, water vapour and other mass constituents).", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "arrangement": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/Arrangement" } ], "description": "A characterisation of the grid staggering defining the relative positions of computed mass-related and velocity-related variables. Taken from 7.3 arrangement CV. Options: 'arakawa_a', 'arakawa_b', 'arakawa_c', 'arakawa_d', 'arakawa_e'. E.g. 'arakawa_c'", "title": "Arrangement" }, "horizontal_subgrids": { "description": "All of the subgrids, of which there must be at least one, used to construct the horizontal computational grid. Each subgrid is associated with one or more variable types (mass-related, velocity-related, etc.), consistent with the arrangement property.", "items": { "$ref": "#/$defs/HorizontalSubgrid" }, "minItems": 1, "title": "Horizontal Subgrids", "type": "array" } }, "required": [ "id", "type", "arrangement", "horizontal_subgrids" ], "title": "HorizontalComputationalGrid", "type": "object" }, "HorizontalGridCells": { "additionalProperties": true, "description": "Horizontal grid cells description (EMD v1.0 Section 4.1.3).\n\nHorizontal grid cells are described by a coordinate system, cell resolutions,\nas well as a number of other grid features. The description does not include\nany information on whether or not the grid cells form part of a model component's\ncomputational grid, and so may be used to describe an arbitrary output grid.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "A description of the grid. A description is only required if there is information that is not covered by any of the other properties. Omit when not required.", "title": "Description" }, "drs_name": { "title": "Drs Name", "type": "string" }, "region": { "anyOf": [ { "$ref": "#/$defs/Region" }, { "type": "string" } ], "description": "The geographical region, or regions, over which the component is simulated. A region is a contiguous part of the Earth's surface, and may include areas for which no calculations are made (such as ocean areas for a land surface component). Taken from 7.5 region CV. E.g. 'global', 'antarctica', 'greenland', 'limited_area'", "title": "Region" }, "grid_type": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/GridType" } ], "description": "The horizontal grid type, i.e. the method of distributing grid cells over the region. Taken from 7.6 grid_type CV. E.g. 'regular_latitude_longitude', 'tripolar'", "title": "Grid Type" }, "grid_mapping": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/GridMapping" }, { "type": "null" } ], "default": null, "description": "The name of the coordinate reference system of the horizontal coordinates. Taken from 7.7 grid_mapping CV. E.g. 'latitude_longitude', 'lambert_conformal_conic'. Can be None or empty for certain grid types (e.g., tripolar grids).", "title": "Grid Mapping" }, "temporal_refinement": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/TemporalRefinement" } ], "description": "The grid temporal refinement, indicating how the distribution of grid cells varies with time. Taken from 7.8 temporal_refinement CV. E.g. 'static'", "title": "Temporal Refinement" }, "spatial_refinement": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The grid spatial refinement, indicating how the distribution of grid cells varies with space. NEW in EMD v1.0. Omit when not applicable.", "title": "Spatial Refinement" }, "x_resolution": { "anyOf": [ { "exclusiveMinimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "\nThe size of grid cells in the X direction.\n\nCells for which no calculations are made are included (such as ocean areas\nfor a land surface component).\n\nThe X direction for a grid defined by spherical polar coordinates is longitude.\n\nThe value's physical units are given by the horizontal_units property.\n\nReport only when cell sizes are identical or else reasonably uniform (in their given units).\nWhen cells sizes in the X direction are not identical, a representative value should be\nprovided and this fact noted in the description property.\nIf the cell sizes vary by more than 25%, set this to None.\n", "title": "X Resolution" }, "y_resolution": { "anyOf": [ { "exclusiveMinimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "\nThe size of grid cells in the Y direction.\n\nCells for which no calculations are made are included (such as ocean areas\nfor a land surface component).\n\nThe Y direction for a grid defined by spherical polar coordinates is latitude.\n\nThe value's physical units are given by the horizontal_units property.\n\nReport only when cell sizes are identical or else reasonably uniform (in their given units).\nWhen cells sizes in the Y direction are not identical, a representative value should be\nprovided and this fact noted in the description property.\nIf the cell sizes vary by more than 25%, set this to None.\n", "title": "Y Resolution" }, "horizontal_units": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "\nThe physical units of the x_resolution and y_resolution property values.\n\nIf x_resolution and y_resolution are None, set this to None.\n", "title": "Horizontal Units" }, "southernmost_latitude": { "anyOf": [ { "maximum": 90.0, "minimum": -90.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "\nThe southernmost grid cell latitude, in degrees north.\n\nCells for which no calculations are made are included.\nThe southernmost latitude may be shared by multiple cells.\n\nIf the southernmost latitude is not known (e.g. the grid is adaptive), use None.\n", "title": "Southernmost Latitude" }, "westernmost_longitude": { "anyOf": [ { "maximum": 360.0, "minimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "\nThe westernmost grid cell longitude, in degrees east, of the southernmost grid cell(s).\n\nCells for which no calculations are made are included.\nThe westernmost longitude is the smallest longitude value of the cells\nthat share the latitude given by the southernmost_latitude.\n\nIf the westernmost longitude is not known (e.g. the grid is adaptive), use None.\n", "title": "Westernmost Longitude" }, "n_cells": { "anyOf": [ { "minimum": 1, "type": "integer" }, { "type": "null" } ], "default": null, "description": "\nThe total number of cells in the horizontal grid.\n\nIf the total number of grid cells is not constant, set to None.\n", "title": "N Cells" }, "truncation_method": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/TruncationMethod" }, { "type": "null" } ], "default": null, "description": "The method for truncating the spherical harmonic representation of a spectral model when reporting on this grid. If the grid is not used for reporting spherical harmonic representations, set to None.", "title": "Truncation Method" }, "truncation_number": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "The zonal (east-west) wave number at which a spectral model is truncated when reporting on this grid. If the grid is not used for reporting spectral models, set to None.", "title": "Truncation Number" }, "resolution_range_km": { "anyOf": [ { "items": { "type": "number" }, "maxItems": 2, "minItems": 2, "type": "array" }, { "type": "null" } ], "default": null, "description": "\nThe minimum and maximum resolution (in km) of cells of the horizontal grid.\n\nShould be calculated according to the algorithm implemented by\nhttps://github.com/PCMDI/nominal_resolution/blob/master/lib/api.py\nYou need to take the min and max of the array that is returned\nwhen using the returnMaxDistance of the mean_resolution function.\n", "title": "Resolution Range Km" } }, "required": [ "id", "type", "drs_name", "region", "grid_type", "temporal_refinement" ], "title": "HorizontalGridCells", "type": "object" }, "HorizontalSubgrid": { "additionalProperties": true, "description": "Horizontal subgrid description (EMD v1.0 Section 4.1.2).\n\nA horizontal subgrid describes the grid cells at one of the stagger positions\nof a horizontal computational grid. Often the locations of mass-related and\nvelocity-related variables differ, so more than one horizontal subgrid will\nbe defined as part of a horizontal computational grid.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "cell_variable_type": { "description": "The types of physical variables that are carried at, or representative of conditions at, the cells described by this horizontal subgrid. Taken from 7.4 cell_variable_type CV. Options: 'mass', 'x_velocity', 'y_velocity', 'velocity'. E.g. ['mass'], ['x_velocity'], ['mass', 'x_velocity', 'y_velocity'], ['mass', 'velocity']. Can be an empty list in certain cases.", "items": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/CellVariableType" } ] }, "title": "Cell Variable Type", "type": "array" }, "horizontal_grid_cells": { "$ref": "#/$defs/HorizontalGridCells", "description": "A description of the characteristics and location of the grid cells of this subgrid." } }, "required": [ "id", "type", "drs_name", "horizontal_grid_cells" ], "title": "HorizontalSubgrid", "type": "object" }, "Reference": { "additionalProperties": true, "description": "Academic reference to published work for the top-level model or model components.\n\nAn academic reference to published work for the top-level model or one of its model\ncomponents is defined by the following properties:\n\n* **Citation** - A human-readable citation for the work.\n E.g. Smith, R. S., Mathiot, P., Siahaan, A., Lee, V., Cornford, S. L., Gregory, J. M.,\n et al. (2021). Coupling the U.K. Earth System model to dynamic models of the Greenland\n and Antarctic ice sheets. Journal of Advances in Modeling Earth Systems, 13,\n e2021MS002520. https://doi.org/10.1029/2021MS002520, 2023\n\n* **DOI** - The persistent identifier (DOI) used to identify the work.\n A DOI is required for all references. A reference that does not already have a DOI\n (as could be the case for some technical reports, for instance) must be given one\n (e.g. with a service like Zenodo).\n E.g. https://doi.org/10.1029/2021MS002520", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "citation": { "description": "A human-readable citation for the work.", "minLength": 1, "title": "Citation", "type": "string" }, "doi": { "description": "The persistent identifier (DOI) used to identify the work. Must be a valid DOI URL.", "minLength": 1, "title": "Doi", "type": "string" } }, "required": [ "id", "type", "drs_name", "citation", "doi" ], "title": "Reference", "type": "object" }, "Region": { "additionalProperties": true, "description": "Region associated with the dataset\n\nExamples: \"glb\", \"30s-90s\", \"grl\"\n\nIn other words, the domain over which the dataset is provided.\nThis is intended as a rough categorisation only\nand is not precisely defined.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "cf_standard_region": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Cf Standard Region" }, "iso_region": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Iso Region" } }, "required": [ "id", "type", "drs_name", "cf_standard_region", "iso_region" ], "title": "Region", "type": "object" }, "TemporalRefinement": { "additionalProperties": true, "description": "Temporal refinement (EMD v1.0 Section 7.8).\n\nOptions: static, etc.\n\nThe grid temporal refinement, indicating how the distribution of grid cells varies with time.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "TemporalRefinement", "type": "object" }, "TruncationMethod": { "additionalProperties": true, "description": "Truncation method (EMD v1.0 Section 7.12).\n\nThe method for truncating the spherical harmonic representation of a spectral model.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "TruncationMethod", "type": "object" }, "VerticalComputationalGrid": { "additionalProperties": true, "description": "Vertical computational grid description (EMD v1.0 Section 4.2).\n\nThe model component's vertical computational grid is described by a subset of the following properties.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "A description of the vertical grid. A description is only required if there is information that is not covered by any of the other properties. Omit when not required.", "title": "Description" }, "vertical_coordinate": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/Coordinate" } ], "description": "The coordinate type of the vertical grid. Taken from 7.11 vertical_coordinate CV. If there is no vertical grid, then the value 'none' must be selected.", "title": "Vertical Coordinate" }, "n_z": { "anyOf": [ { "minimum": 1, "type": "integer" }, { "type": "null" } ], "default": null, "description": "The number of layers (i.e. grid cells) in the Z direction. Omit when not applicable or not constant. If the number of layers varies in time or across the horizontal grid, then the n_z_range property may be used instead.", "title": "N Z" }, "n_z_range": { "anyOf": [ { "items": { "type": "integer" }, "maxItems": 2, "minItems": 2, "type": "array" }, { "type": "null" } ], "default": null, "description": "The minimum and maximum number of layers for vertical grids with a time- or space-varying number of layers. Omit if the n_z property has been set.", "title": "N Z Range" }, "bottom_layer_thickness": { "anyOf": [ { "exclusiveMinimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "The thickness of the bottom model layer (i.e. the layer closest to the centre of the Earth). The value should be reported as a dimensional (as opposed to parametric) quantity. All measurements are in metres (EMD v1.0).", "title": "Bottom Layer Thickness" }, "top_layer_thickness": { "anyOf": [ { "exclusiveMinimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "The thickness of the top model layer (i.e. the layer furthest away from the centre of the Earth). The value should be reported as a dimensional (as opposed to parametric) quantity. All measurements are in metres (EMD v1.0).", "title": "Top Layer Thickness" }, "top_of_model": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The upper boundary of the top model layer (i.e. the upper boundary of the layer that is furthest away from the centre of the Earth). The value should be relative to the lower boundary of the bottom layer of the model, or an appropriate datum (such as mean sea level). All measurements are in metres (EMD v1.0).", "title": "Top Of Model" } }, "required": [ "id", "type", "vertical_coordinate" ], "title": "VerticalComputationalGrid", "type": "object" } }, "additionalProperties": true, "required": [ "id", "type", "description", "drs_name", "component", "name", "family", "references", "code_base", "horizontal_computational_grid", "vertical_computational_grid" ] }
- Validators:
validate_code_base_format»code_basevalidate_coupling_exclusivity»coupled_withvalidate_embedding_exclusivity»embedded_invalidate_non_empty_strings»code_basevalidate_non_empty_strings»componentvalidate_non_empty_strings»descriptionvalidate_non_empty_strings»familyvalidate_non_empty_strings»name
- field code_base: str [Required][source]#
A URL (preferably for a DOI) for the source code for the model component. Set to ‘private’ if not publicly available.
- Constraints:
min_length = 1
- Validated by:
validate_code_base_formatvalidate_non_empty_strings
- field component: str | ComponentType [Required][source]#
The type of the model component. Taken from 7.1 component CV.
- Validated by:
validate_non_empty_strings
- field coupled_with: List[str | ComponentType] | None = None[source]#
The model components (identified by their component properties) with which this component is ‘coupled’. Taken from 7.1 component CV. Omit when this component is embedded in another component.
- Validated by:
validate_coupling_exclusivity
- field description: str [Required][source]#
The description of the term.
A scientific overview of the model component. The description should summarise the key processes simulated by the model component.
- Constraints:
min_length = 1
- Validated by:
validate_non_empty_strings
- field embedded_in: str | ComponentType | None = None[source]#
The host model component (identified by its component property) in which this component is ‘embedded’. Taken from 7.1 component CV. Omit when this component is coupled with other components.
- Validated by:
validate_embedding_exclusivity
- field family: str [Required][source]#
The model component’s ‘family’ name. Use ‘none’ to indicate that there is no such family.
- Constraints:
min_length = 1
- Validated by:
validate_non_empty_strings
- field horizontal_computational_grid: HorizontalComputationalGrid [Required][source]#
A standardised description of the model component’s horizontal computational grid.
- field name: str [Required][source]#
The name of the model component.
- Constraints:
min_length = 1
- Validated by:
validate_non_empty_strings
- field references: List[str | Reference] [Required][source]#
One or more references to published work for the model component.
- Constraints:
min_length = 1
- field vertical_computational_grid: VerticalComputationalGrid [Required][source]#
A standardised description of the model component’s vertical computational grid.
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- validator validate_code_base_format » code_base[source]#
Validate code_base is either ‘private’ or a URL.
- validator validate_coupling_exclusivity » coupled_with[source]#
Validate that a component cannot be both embedded and coupled.
- validator validate_embedding_exclusivity » embedded_in[source]#
Validate that a component cannot be both embedded and coupled.
- Pydantic model esgvoc.api.data_descriptors.EMDResolution[source]#
Bases:
PlainTermDataDescriptorThe nominal resolution (in km) characterises the resolution of a model’s native horizontal grid.
See section 5.1 Native horizontal grid properties. Options for the native horizontal grid nominal resolution property are defined in the following table as a function of the value of the mean resolution km property:
Mean resolution R
Nominal resolution
0.036 ≤ R < 0.072
0.05 km
0.072 ≤ R < 0.16
0.1 km
0.16 ≤ R < 0.36
0.25 km
0.36 ≤ R < 0.72
0.5 km
0.72 ≤ R < 1.6
1 km
1.6 ≤ R < 3.6
2.5 km
3.6 ≤ R < 7.2
5 km
7.2 ≤ R < 16
10 km
16 ≤ R < 36
25 km
36 ≤ R < 72
50 km
72 ≤ R < 160
100 km
160 ≤ R < 360
250 km
360 ≤ R < 720
500 km
720 ≤ R < 1600
1000 km
1600 ≤ R < 3600
2500 km
3600 ≤ R < 7200
5000 km
7200 ≤ R < 16000
10000 km
Show JSON schema
{ "title": "EMDResolution", "description": "The nominal resolution (in km) characterises the resolution of a model's native horizontal grid.\n\nSee section 5.1 Native horizontal grid properties.\nOptions for the native horizontal grid nominal resolution property are defined\nin the following table as a function of the value of the mean resolution km property:\n\n==================== ====================\nMean resolution R Nominal resolution\n==================== ====================\n0.036 \u2264 R < 0.072 0.05 km\n0.072 \u2264 R < 0.16 0.1 km\n0.16 \u2264 R < 0.36 0.25 km\n0.36 \u2264 R < 0.72 0.5 km\n0.72 \u2264 R < 1.6 1 km\n1.6 \u2264 R < 3.6 2.5 km\n3.6 \u2264 R < 7.2 5 km\n7.2 \u2264 R < 16 10 km\n16 \u2264 R < 36 25 km\n36 \u2264 R < 72 50 km\n72 \u2264 R < 160 100 km\n160 \u2264 R < 360 250 km\n360 \u2264 R < 720 500 km\n720 \u2264 R < 1600 1000 km\n1600 \u2264 R < 3600 2500 km\n3600 \u2264 R < 7200 5000 km\n7200 \u2264 R < 16000 10000 km\n==================== ====================", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "mean_resolution": { "title": "Mean Resolution", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name", "mean_resolution" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.ForcingIndex[source]#
Bases:
PatternTermDataDescriptorLabel that identifies the forcing variant used to produce a dataset
Examples: “f1”, “f2”, “f23”
This label can be used, for example, to distinguish between two historical simulations, one forced with the recommended forcing data sets and another forced by a different dataset, which might yield information about how forcing uncertainty affects the simulation. The value has no intrinsic meaning within the CVs. However, in other external sources (to be confirmed which) the meaning of this forcing label for a given simulation can be looked up.
Show JSON schema
{ "title": "ForcingIndex", "description": "Label that identifies the forcing variant used to produce a dataset\n\nExamples: \"f1\", \"f2\", \"f23\"\n\nThis label can be used, for example, to distinguish between two historical simulations,\none forced with the recommended forcing data sets\nand another forced by a different dataset,\nwhich might yield information about how forcing uncertainty affects the simulation.\nThe value has no intrinsic meaning within the CVs.\nHowever, in other external sources (to be confirmed which)\nthe meaning of this forcing label for a given simulation can be looked up.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "regex": { "title": "Regex", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "regex" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.Frequency[source]#
Bases:
PlainTermDataDescriptorReporting/temporal sampling interval used when creating the dataset
Examples: “mon”, “day”, “3hr”, “monC”
This is a bit of a trickier concept than it first appears. For time average data, it is effectively the size of each time cell (e.g. if each time point is the average of a month’s worth of data, then the data is assigned the term “mon”). For time point data, it is the time interval between each reported point (e.g. if the data is reported at midday each day, then the data is assigned the term “day”, although in practice the size of each time cell works in this case too).
This can usually be validated against the actual data in the file, but it can be complicated with some calendars (e.g. the Julian-Gregorian calendar which has 15 missing days in 1582), reporting intervals (e.g. “mon”, which changes length at each interval) and when climatologies are involved (as identifying these follows special rules covered by the CF conventions).
Show JSON schema
{ "title": "Frequency", "description": "Reporting/temporal sampling interval used when creating the dataset\n\nExamples: \"mon\", \"day\", \"3hr\", \"monC\"\n\nThis is a bit of a trickier concept than it first appears.\nFor time average data, it is effectively the size of each time cell\n(e.g. if each time point is the average of a month's worth of data,\nthen the data is assigned the term \"mon\").\nFor time point data, it is the time interval between each reported point\n(e.g. if the data is reported at midday each day,\nthen the data is assigned the term \"day\",\nalthough in practice the size of each time cell works in this case too).\n\nThis can usually be validated against the actual data in the file,\nbut it can be complicated with some calendars\n(e.g. the Julian-Gregorian calendar which has 15 missing days in 1582),\nreporting intervals (e.g. \"mon\", which changes length at each interval)\nand when climatologies are involved\n(as identifying these follows special rules covered by the CF conventions).", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "interval": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "title": "Interval" }, "units": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Units" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name", "interval", "units" ] }
- field interval: float | None [Required][source]#
Size of the interval
See self.units for units.
If None, then the interval for this frequency label is undefined, either because it does not exist (e.g. the label for data that does not have a time dimension) or because the label does not uniquely define the interval (e.g. sub-hour labels).
- field units: str | None [Required][source]#
Units of the interval
If None, then the units for this frequency are not defined because it does not exist (e.g. the label for data that does not have a time dimension).
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.FurtherInfoUrl[source]#
Bases:
PatternTermDataDescriptorShow JSON schema
{ "title": "FurtherInfoUrl", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "regex": { "title": "Regex", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "regex" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.Grid[source]#
Bases:
PlainTermDataDescriptorGrid (horizontal) on which the data is reported
Examples: “g1”, “g2”, “g33”
The value has no intrinsic meaning within the CVs. However, the other attributes of this model provide information about the grid and in other external sources (to be confirmed which) further resources can be found e.g. cell areas.
Grids with the same id (also referred to as ‘grid label’) are identical (details on how we check identical are to come, for discussion, see WCRP-CMIP/CMIP7-CVs#202) and can be used by more than one model (also referred to as ‘source’ in CMIP language). Grids with different labels are different.
Show JSON schema
{ "title": "Grid", "description": "Grid (horizontal) on which the data is reported\n\nExamples: \"g1\", \"g2\", \"g33\"\n\nThe value has no intrinsic meaning within the CVs.\nHowever, the other attributes of this model\nprovide information about the grid\nand in other external sources (to be confirmed which)\nfurther resources can be found e.g. cell areas.\n\nGrids with the same id (also referred to as 'grid label')\nare identical (details on how we check identical are to come, for discussion,\nsee https://github.com/WCRP-CMIP/CMIP7-CVs/issues/202)\nand can be used by more than one model\n(also referred to as 'source' in CMIP language).\nGrids with different labels are different.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "region": { "anyOf": [ { "$ref": "#/$defs/Region" }, { "type": "string" } ], "title": "Region" } }, "$defs": { "Region": { "additionalProperties": true, "description": "Region associated with the dataset\n\nExamples: \"glb\", \"30s-90s\", \"grl\"\n\nIn other words, the domain over which the dataset is provided.\nThis is intended as a rough categorisation only\nand is not precisely defined.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "cf_standard_region": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Cf Standard Region" }, "iso_region": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Iso Region" } }, "required": [ "id", "type", "drs_name", "cf_standard_region", "iso_region" ], "title": "Region", "type": "object" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name", "region" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.GridMapping[source]#
Bases:
PlainTermDataDescriptorGrid mapping (EMD v1.0 Section 7.7).
Options: latitude_longitude, lambert_conformal_conic, etc.
The name of the coordinate reference system of the horizontal coordinates.
Show JSON schema
{ "title": "GridMapping", "description": "Grid mapping (EMD v1.0 Section 7.7).\n\nOptions: latitude_longitude, lambert_conformal_conic, etc.\n\nThe name of the coordinate reference system of the horizontal coordinates.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.GridRegion[source]#
Bases:
PlainTermDataDescriptorHorizontal grid region (EMD v1.0 Section 7.5).
Options: global, antarctica, greenland, limited_area, 30S-90S, etc.
A region is a contiguous part of the Earth’s surface which spans the horizontal grid cells.
Show JSON schema
{ "title": "GridRegion", "description": "Horizontal grid region (EMD v1.0 Section 7.5).\n\nOptions: global, antarctica, greenland, limited_area, 30S-90S, etc.\n\nA region is a contiguous part of the Earth's surface which spans the horizontal grid cells.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.GridType[source]#
Bases:
PlainTermDataDescriptorHorizontal grid type (EMD v1.0 Section 7.6).
Options: regular_latitude_longitude, regular_gaussian, reduced_gaussian, tripolar, etc.
A grid type describes the method for distributing grid points over the sphere.
Show JSON schema
{ "title": "GridType", "description": "Horizontal grid type (EMD v1.0 Section 7.6).\n\nOptions: regular_latitude_longitude, regular_gaussian, reduced_gaussian, tripolar, etc.\n\nA grid type describes the method for distributing grid points over the sphere.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.HorizontalComputationalGrid[source]#
Bases:
DataDescriptorHorizontal computational grid description (EMD v1.0 Section 4.1.1).
A model component’s horizontal computational grid is composed of one or more horizontal subgrids, on which different sets of variables are calculated. When the computational grid relies on more than one subgrid, it is referred to as a “staggered” grid. For most staggered grids, the velocity-related variables are calculated on a subgrid offset from the mass-related variables (e.g. pressure, temperature, water vapour and other mass constituents).
Show JSON schema
{ "title": "HorizontalComputationalGrid", "description": "Horizontal computational grid description (EMD v1.0 Section 4.1.1).\n\nA model component's horizontal computational grid is composed of one or more\nhorizontal subgrids, on which different sets of variables are calculated.\nWhen the computational grid relies on more than one subgrid, it is referred to\nas a \"staggered\" grid. For most staggered grids, the velocity-related variables\nare calculated on a subgrid offset from the mass-related variables (e.g. pressure,\ntemperature, water vapour and other mass constituents).", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "arrangement": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/Arrangement" } ], "description": "A characterisation of the grid staggering defining the relative positions of computed mass-related and velocity-related variables. Taken from 7.3 arrangement CV. Options: 'arakawa_a', 'arakawa_b', 'arakawa_c', 'arakawa_d', 'arakawa_e'. E.g. 'arakawa_c'", "title": "Arrangement" }, "horizontal_subgrids": { "description": "All of the subgrids, of which there must be at least one, used to construct the horizontal computational grid. Each subgrid is associated with one or more variable types (mass-related, velocity-related, etc.), consistent with the arrangement property.", "items": { "$ref": "#/$defs/HorizontalSubgrid" }, "minItems": 1, "title": "Horizontal Subgrids", "type": "array" } }, "$defs": { "Arrangement": { "additionalProperties": true, "description": "Horizontal grid arrangement (EMD v1.0 Section 7.3).\n\nOptions: arakawa_a, arakawa_b, arakawa_c, arakawa_d, arakawa_e\n\nA grid arrangement describes the relative locations of mass- and velocity-related quantities\non the computed grid (for instance Collins et al. (2013), and for unstructured grids\nThuburn et al. (2009)).", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "Arrangement", "type": "object" }, "CellVariableType": { "additionalProperties": true, "description": "Cell variable type (EMD v1.0 Section 7.4).\n\nOptions: mass, x_velocity, y_velocity, velocity\n\nTypes of physical variables that are carried at, or representative of conditions at,\ncells of a horizontal subgrid.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "CellVariableType", "type": "object" }, "GridMapping": { "additionalProperties": true, "description": "Grid mapping (EMD v1.0 Section 7.7).\n\nOptions: latitude_longitude, lambert_conformal_conic, etc.\n\nThe name of the coordinate reference system of the horizontal coordinates.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "GridMapping", "type": "object" }, "GridType": { "additionalProperties": true, "description": "Horizontal grid type (EMD v1.0 Section 7.6).\n\nOptions: regular_latitude_longitude, regular_gaussian, reduced_gaussian, tripolar, etc.\n\nA grid type describes the method for distributing grid points over the sphere.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "GridType", "type": "object" }, "HorizontalGridCells": { "additionalProperties": true, "description": "Horizontal grid cells description (EMD v1.0 Section 4.1.3).\n\nHorizontal grid cells are described by a coordinate system, cell resolutions,\nas well as a number of other grid features. The description does not include\nany information on whether or not the grid cells form part of a model component's\ncomputational grid, and so may be used to describe an arbitrary output grid.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "A description of the grid. A description is only required if there is information that is not covered by any of the other properties. Omit when not required.", "title": "Description" }, "drs_name": { "title": "Drs Name", "type": "string" }, "region": { "anyOf": [ { "$ref": "#/$defs/Region" }, { "type": "string" } ], "description": "The geographical region, or regions, over which the component is simulated. A region is a contiguous part of the Earth's surface, and may include areas for which no calculations are made (such as ocean areas for a land surface component). Taken from 7.5 region CV. E.g. 'global', 'antarctica', 'greenland', 'limited_area'", "title": "Region" }, "grid_type": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/GridType" } ], "description": "The horizontal grid type, i.e. the method of distributing grid cells over the region. Taken from 7.6 grid_type CV. E.g. 'regular_latitude_longitude', 'tripolar'", "title": "Grid Type" }, "grid_mapping": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/GridMapping" }, { "type": "null" } ], "default": null, "description": "The name of the coordinate reference system of the horizontal coordinates. Taken from 7.7 grid_mapping CV. E.g. 'latitude_longitude', 'lambert_conformal_conic'. Can be None or empty for certain grid types (e.g., tripolar grids).", "title": "Grid Mapping" }, "temporal_refinement": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/TemporalRefinement" } ], "description": "The grid temporal refinement, indicating how the distribution of grid cells varies with time. Taken from 7.8 temporal_refinement CV. E.g. 'static'", "title": "Temporal Refinement" }, "spatial_refinement": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The grid spatial refinement, indicating how the distribution of grid cells varies with space. NEW in EMD v1.0. Omit when not applicable.", "title": "Spatial Refinement" }, "x_resolution": { "anyOf": [ { "exclusiveMinimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "\nThe size of grid cells in the X direction.\n\nCells for which no calculations are made are included (such as ocean areas\nfor a land surface component).\n\nThe X direction for a grid defined by spherical polar coordinates is longitude.\n\nThe value's physical units are given by the horizontal_units property.\n\nReport only when cell sizes are identical or else reasonably uniform (in their given units).\nWhen cells sizes in the X direction are not identical, a representative value should be\nprovided and this fact noted in the description property.\nIf the cell sizes vary by more than 25%, set this to None.\n", "title": "X Resolution" }, "y_resolution": { "anyOf": [ { "exclusiveMinimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "\nThe size of grid cells in the Y direction.\n\nCells for which no calculations are made are included (such as ocean areas\nfor a land surface component).\n\nThe Y direction for a grid defined by spherical polar coordinates is latitude.\n\nThe value's physical units are given by the horizontal_units property.\n\nReport only when cell sizes are identical or else reasonably uniform (in their given units).\nWhen cells sizes in the Y direction are not identical, a representative value should be\nprovided and this fact noted in the description property.\nIf the cell sizes vary by more than 25%, set this to None.\n", "title": "Y Resolution" }, "horizontal_units": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "\nThe physical units of the x_resolution and y_resolution property values.\n\nIf x_resolution and y_resolution are None, set this to None.\n", "title": "Horizontal Units" }, "southernmost_latitude": { "anyOf": [ { "maximum": 90.0, "minimum": -90.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "\nThe southernmost grid cell latitude, in degrees north.\n\nCells for which no calculations are made are included.\nThe southernmost latitude may be shared by multiple cells.\n\nIf the southernmost latitude is not known (e.g. the grid is adaptive), use None.\n", "title": "Southernmost Latitude" }, "westernmost_longitude": { "anyOf": [ { "maximum": 360.0, "minimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "\nThe westernmost grid cell longitude, in degrees east, of the southernmost grid cell(s).\n\nCells for which no calculations are made are included.\nThe westernmost longitude is the smallest longitude value of the cells\nthat share the latitude given by the southernmost_latitude.\n\nIf the westernmost longitude is not known (e.g. the grid is adaptive), use None.\n", "title": "Westernmost Longitude" }, "n_cells": { "anyOf": [ { "minimum": 1, "type": "integer" }, { "type": "null" } ], "default": null, "description": "\nThe total number of cells in the horizontal grid.\n\nIf the total number of grid cells is not constant, set to None.\n", "title": "N Cells" }, "truncation_method": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/TruncationMethod" }, { "type": "null" } ], "default": null, "description": "The method for truncating the spherical harmonic representation of a spectral model when reporting on this grid. If the grid is not used for reporting spherical harmonic representations, set to None.", "title": "Truncation Method" }, "truncation_number": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "The zonal (east-west) wave number at which a spectral model is truncated when reporting on this grid. If the grid is not used for reporting spectral models, set to None.", "title": "Truncation Number" }, "resolution_range_km": { "anyOf": [ { "items": { "type": "number" }, "maxItems": 2, "minItems": 2, "type": "array" }, { "type": "null" } ], "default": null, "description": "\nThe minimum and maximum resolution (in km) of cells of the horizontal grid.\n\nShould be calculated according to the algorithm implemented by\nhttps://github.com/PCMDI/nominal_resolution/blob/master/lib/api.py\nYou need to take the min and max of the array that is returned\nwhen using the returnMaxDistance of the mean_resolution function.\n", "title": "Resolution Range Km" } }, "required": [ "id", "type", "drs_name", "region", "grid_type", "temporal_refinement" ], "title": "HorizontalGridCells", "type": "object" }, "HorizontalSubgrid": { "additionalProperties": true, "description": "Horizontal subgrid description (EMD v1.0 Section 4.1.2).\n\nA horizontal subgrid describes the grid cells at one of the stagger positions\nof a horizontal computational grid. Often the locations of mass-related and\nvelocity-related variables differ, so more than one horizontal subgrid will\nbe defined as part of a horizontal computational grid.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "cell_variable_type": { "description": "The types of physical variables that are carried at, or representative of conditions at, the cells described by this horizontal subgrid. Taken from 7.4 cell_variable_type CV. Options: 'mass', 'x_velocity', 'y_velocity', 'velocity'. E.g. ['mass'], ['x_velocity'], ['mass', 'x_velocity', 'y_velocity'], ['mass', 'velocity']. Can be an empty list in certain cases.", "items": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/CellVariableType" } ] }, "title": "Cell Variable Type", "type": "array" }, "horizontal_grid_cells": { "$ref": "#/$defs/HorizontalGridCells", "description": "A description of the characteristics and location of the grid cells of this subgrid." } }, "required": [ "id", "type", "drs_name", "horizontal_grid_cells" ], "title": "HorizontalSubgrid", "type": "object" }, "Region": { "additionalProperties": true, "description": "Region associated with the dataset\n\nExamples: \"glb\", \"30s-90s\", \"grl\"\n\nIn other words, the domain over which the dataset is provided.\nThis is intended as a rough categorisation only\nand is not precisely defined.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "cf_standard_region": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Cf Standard Region" }, "iso_region": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Iso Region" } }, "required": [ "id", "type", "drs_name", "cf_standard_region", "iso_region" ], "title": "Region", "type": "object" }, "TemporalRefinement": { "additionalProperties": true, "description": "Temporal refinement (EMD v1.0 Section 7.8).\n\nOptions: static, etc.\n\nThe grid temporal refinement, indicating how the distribution of grid cells varies with time.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "TemporalRefinement", "type": "object" }, "TruncationMethod": { "additionalProperties": true, "description": "Truncation method (EMD v1.0 Section 7.12).\n\nThe method for truncating the spherical harmonic representation of a spectral model.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "TruncationMethod", "type": "object" } }, "additionalProperties": true, "required": [ "id", "type", "arrangement", "horizontal_subgrids" ] }
- Validators:
validate_at_least_one_subgrid»horizontal_subgrids
- field arrangement: str | Arrangement [Required][source]#
A characterisation of the grid staggering defining the relative positions of computed mass-related and velocity-related variables. Taken from 7.3 arrangement CV. Options: ‘arakawa_a’, ‘arakawa_b’, ‘arakawa_c’, ‘arakawa_d’, ‘arakawa_e’. E.g. ‘arakawa_c’
- field horizontal_subgrids: List[HorizontalSubgrid] [Required][source]#
All of the subgrids, of which there must be at least one, used to construct the horizontal computational grid. Each subgrid is associated with one or more variable types (mass-related, velocity-related, etc.), consistent with the arrangement property.
- Constraints:
min_length = 1
- Validated by:
validate_at_least_one_subgrid
- Pydantic model esgvoc.api.data_descriptors.HorizontalGridCells[source]#
Bases:
PlainTermDataDescriptorHorizontal grid cells description (EMD v1.0 Section 4.1.3).
Horizontal grid cells are described by a coordinate system, cell resolutions, as well as a number of other grid features. The description does not include any information on whether or not the grid cells form part of a model component’s computational grid, and so may be used to describe an arbitrary output grid.
Show JSON schema
{ "title": "HorizontalGridCells", "description": "Horizontal grid cells description (EMD v1.0 Section 4.1.3).\n\nHorizontal grid cells are described by a coordinate system, cell resolutions,\nas well as a number of other grid features. The description does not include\nany information on whether or not the grid cells form part of a model component's\ncomputational grid, and so may be used to describe an arbitrary output grid.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "A description of the grid. A description is only required if there is information that is not covered by any of the other properties. Omit when not required.", "title": "Description" }, "drs_name": { "title": "Drs Name", "type": "string" }, "region": { "anyOf": [ { "$ref": "#/$defs/Region" }, { "type": "string" } ], "description": "The geographical region, or regions, over which the component is simulated. A region is a contiguous part of the Earth's surface, and may include areas for which no calculations are made (such as ocean areas for a land surface component). Taken from 7.5 region CV. E.g. 'global', 'antarctica', 'greenland', 'limited_area'", "title": "Region" }, "grid_type": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/GridType" } ], "description": "The horizontal grid type, i.e. the method of distributing grid cells over the region. Taken from 7.6 grid_type CV. E.g. 'regular_latitude_longitude', 'tripolar'", "title": "Grid Type" }, "grid_mapping": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/GridMapping" }, { "type": "null" } ], "default": null, "description": "The name of the coordinate reference system of the horizontal coordinates. Taken from 7.7 grid_mapping CV. E.g. 'latitude_longitude', 'lambert_conformal_conic'. Can be None or empty for certain grid types (e.g., tripolar grids).", "title": "Grid Mapping" }, "temporal_refinement": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/TemporalRefinement" } ], "description": "The grid temporal refinement, indicating how the distribution of grid cells varies with time. Taken from 7.8 temporal_refinement CV. E.g. 'static'", "title": "Temporal Refinement" }, "spatial_refinement": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The grid spatial refinement, indicating how the distribution of grid cells varies with space. NEW in EMD v1.0. Omit when not applicable.", "title": "Spatial Refinement" }, "x_resolution": { "anyOf": [ { "exclusiveMinimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "\nThe size of grid cells in the X direction.\n\nCells for which no calculations are made are included (such as ocean areas\nfor a land surface component).\n\nThe X direction for a grid defined by spherical polar coordinates is longitude.\n\nThe value's physical units are given by the horizontal_units property.\n\nReport only when cell sizes are identical or else reasonably uniform (in their given units).\nWhen cells sizes in the X direction are not identical, a representative value should be\nprovided and this fact noted in the description property.\nIf the cell sizes vary by more than 25%, set this to None.\n", "title": "X Resolution" }, "y_resolution": { "anyOf": [ { "exclusiveMinimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "\nThe size of grid cells in the Y direction.\n\nCells for which no calculations are made are included (such as ocean areas\nfor a land surface component).\n\nThe Y direction for a grid defined by spherical polar coordinates is latitude.\n\nThe value's physical units are given by the horizontal_units property.\n\nReport only when cell sizes are identical or else reasonably uniform (in their given units).\nWhen cells sizes in the Y direction are not identical, a representative value should be\nprovided and this fact noted in the description property.\nIf the cell sizes vary by more than 25%, set this to None.\n", "title": "Y Resolution" }, "horizontal_units": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "\nThe physical units of the x_resolution and y_resolution property values.\n\nIf x_resolution and y_resolution are None, set this to None.\n", "title": "Horizontal Units" }, "southernmost_latitude": { "anyOf": [ { "maximum": 90.0, "minimum": -90.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "\nThe southernmost grid cell latitude, in degrees north.\n\nCells for which no calculations are made are included.\nThe southernmost latitude may be shared by multiple cells.\n\nIf the southernmost latitude is not known (e.g. the grid is adaptive), use None.\n", "title": "Southernmost Latitude" }, "westernmost_longitude": { "anyOf": [ { "maximum": 360.0, "minimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "\nThe westernmost grid cell longitude, in degrees east, of the southernmost grid cell(s).\n\nCells for which no calculations are made are included.\nThe westernmost longitude is the smallest longitude value of the cells\nthat share the latitude given by the southernmost_latitude.\n\nIf the westernmost longitude is not known (e.g. the grid is adaptive), use None.\n", "title": "Westernmost Longitude" }, "n_cells": { "anyOf": [ { "minimum": 1, "type": "integer" }, { "type": "null" } ], "default": null, "description": "\nThe total number of cells in the horizontal grid.\n\nIf the total number of grid cells is not constant, set to None.\n", "title": "N Cells" }, "truncation_method": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/TruncationMethod" }, { "type": "null" } ], "default": null, "description": "The method for truncating the spherical harmonic representation of a spectral model when reporting on this grid. If the grid is not used for reporting spherical harmonic representations, set to None.", "title": "Truncation Method" }, "truncation_number": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "The zonal (east-west) wave number at which a spectral model is truncated when reporting on this grid. If the grid is not used for reporting spectral models, set to None.", "title": "Truncation Number" }, "resolution_range_km": { "anyOf": [ { "items": { "type": "number" }, "maxItems": 2, "minItems": 2, "type": "array" }, { "type": "null" } ], "default": null, "description": "\nThe minimum and maximum resolution (in km) of cells of the horizontal grid.\n\nShould be calculated according to the algorithm implemented by\nhttps://github.com/PCMDI/nominal_resolution/blob/master/lib/api.py\nYou need to take the min and max of the array that is returned\nwhen using the returnMaxDistance of the mean_resolution function.\n", "title": "Resolution Range Km" } }, "$defs": { "GridMapping": { "additionalProperties": true, "description": "Grid mapping (EMD v1.0 Section 7.7).\n\nOptions: latitude_longitude, lambert_conformal_conic, etc.\n\nThe name of the coordinate reference system of the horizontal coordinates.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "GridMapping", "type": "object" }, "GridType": { "additionalProperties": true, "description": "Horizontal grid type (EMD v1.0 Section 7.6).\n\nOptions: regular_latitude_longitude, regular_gaussian, reduced_gaussian, tripolar, etc.\n\nA grid type describes the method for distributing grid points over the sphere.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "GridType", "type": "object" }, "Region": { "additionalProperties": true, "description": "Region associated with the dataset\n\nExamples: \"glb\", \"30s-90s\", \"grl\"\n\nIn other words, the domain over which the dataset is provided.\nThis is intended as a rough categorisation only\nand is not precisely defined.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "cf_standard_region": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Cf Standard Region" }, "iso_region": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Iso Region" } }, "required": [ "id", "type", "drs_name", "cf_standard_region", "iso_region" ], "title": "Region", "type": "object" }, "TemporalRefinement": { "additionalProperties": true, "description": "Temporal refinement (EMD v1.0 Section 7.8).\n\nOptions: static, etc.\n\nThe grid temporal refinement, indicating how the distribution of grid cells varies with time.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "TemporalRefinement", "type": "object" }, "TruncationMethod": { "additionalProperties": true, "description": "Truncation method (EMD v1.0 Section 7.12).\n\nThe method for truncating the spherical harmonic representation of a spectral model.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "TruncationMethod", "type": "object" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name", "region", "grid_type", "temporal_refinement" ] }
- Validators:
validate_horizontal_units»horizontal_unitsvalidate_resolution_range»resolution_range_km
- field description: str | None = None[source]#
The description of the term.
A description of the grid. A description is only required if there is information that is not covered by any of the other properties. Omit when not required.
- field grid_mapping: str | GridMapping | None = None[source]#
The name of the coordinate reference system of the horizontal coordinates. Taken from 7.7 grid_mapping CV. E.g. ‘latitude_longitude’, ‘lambert_conformal_conic’. Can be None or empty for certain grid types (e.g., tripolar grids).
- field grid_type: str | GridType [Required][source]#
The horizontal grid type, i.e. the method of distributing grid cells over the region. Taken from 7.6 grid_type CV. E.g. ‘regular_latitude_longitude’, ‘tripolar’
- field horizontal_units: str | None = None[source]#
The physical units of the x_resolution and y_resolution property values.
If x_resolution and y_resolution are None, set this to None.
- Validated by:
validate_horizontal_units
- field n_cells: int | None = None[source]#
The total number of cells in the horizontal grid.
If the total number of grid cells is not constant, set to None.
- Constraints:
ge = 1
- field region: Region | str [Required][source]#
The geographical region, or regions, over which the component is simulated. A region is a contiguous part of the Earth’s surface, and may include areas for which no calculations are made (such as ocean areas for a land surface component). Taken from 7.5 region CV. E.g. ‘global’, ‘antarctica’, ‘greenland’, ‘limited_area’
- field resolution_range_km: list[float] | None = None[source]#
The minimum and maximum resolution (in km) of cells of the horizontal grid.
Should be calculated according to the algorithm implemented by PCMDI/nominal_resolution You need to take the min and max of the array that is returned when using the returnMaxDistance of the mean_resolution function.
- Constraints:
min_length = 2
max_length = 2
- Validated by:
validate_resolution_range
- field southernmost_latitude: float | None = None[source]#
The southernmost grid cell latitude, in degrees north.
Cells for which no calculations are made are included. The southernmost latitude may be shared by multiple cells.
If the southernmost latitude is not known (e.g. the grid is adaptive), use None.
- Constraints:
ge = -90.0
le = 90.0
- field spatial_refinement: str | None = None[source]#
The grid spatial refinement, indicating how the distribution of grid cells varies with space. NEW in EMD v1.0. Omit when not applicable.
- field temporal_refinement: str | TemporalRefinement [Required][source]#
The grid temporal refinement, indicating how the distribution of grid cells varies with time. Taken from 7.8 temporal_refinement CV. E.g. ‘static’
- field truncation_method: str | TruncationMethod | None = None[source]#
The method for truncating the spherical harmonic representation of a spectral model when reporting on this grid. If the grid is not used for reporting spherical harmonic representations, set to None.
- field truncation_number: int | None = None[source]#
The zonal (east-west) wave number at which a spectral model is truncated when reporting on this grid. If the grid is not used for reporting spectral models, set to None.
- field westernmost_longitude: float | None = None[source]#
The westernmost grid cell longitude, in degrees east, of the southernmost grid cell(s).
Cells for which no calculations are made are included. The westernmost longitude is the smallest longitude value of the cells that share the latitude given by the southernmost_latitude.
If the westernmost longitude is not known (e.g. the grid is adaptive), use None.
- Constraints:
ge = 0.0
le = 360.0
- field x_resolution: float | None = None[source]#
The size of grid cells in the X direction.
Cells for which no calculations are made are included (such as ocean areas for a land surface component).
The X direction for a grid defined by spherical polar coordinates is longitude.
The value’s physical units are given by the horizontal_units property.
Report only when cell sizes are identical or else reasonably uniform (in their given units). When cells sizes in the X direction are not identical, a representative value should be provided and this fact noted in the description property. If the cell sizes vary by more than 25%, set this to None.
- Constraints:
gt = 0
- field y_resolution: float | None = None[source]#
The size of grid cells in the Y direction.
Cells for which no calculations are made are included (such as ocean areas for a land surface component).
The Y direction for a grid defined by spherical polar coordinates is latitude.
The value’s physical units are given by the horizontal_units property.
Report only when cell sizes are identical or else reasonably uniform (in their given units). When cells sizes in the Y direction are not identical, a representative value should be provided and this fact noted in the description property. If the cell sizes vary by more than 25%, set this to None.
- Constraints:
gt = 0
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.HorizontalLabel[source]#
Bases:
PlainTermDataDescriptorLabel that describes a specific horizontal sampling approach
Examples: “hxy”, “hs”, “hm”
This is set to “hm” (“horizontal mean”) when no other horizontal labels apply. For underlying details and logic, please see [Taylor et al., 2025](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).
This label is used as the area component of a branded variable’s suffix (see
BrandedSuffix).Show JSON schema
{ "title": "HorizontalLabel", "description": "Label that describes a specific horizontal sampling approach\n\nExamples: \"hxy\", \"hs\", \"hm\"\n\nThis is set to \"hm\" (\"horizontal mean\") when no other horizontal labels apply.\nFor underlying details and logic, please see\n[Taylor et al., 2025](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).\n\nThis label is used as the area component of a branded variable's suffix\n(see :py:class:`BrandedSuffix`).", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.HorizontalSubgrid[source]#
Bases:
PlainTermDataDescriptorHorizontal subgrid description (EMD v1.0 Section 4.1.2).
A horizontal subgrid describes the grid cells at one of the stagger positions of a horizontal computational grid. Often the locations of mass-related and velocity-related variables differ, so more than one horizontal subgrid will be defined as part of a horizontal computational grid.
Show JSON schema
{ "title": "HorizontalSubgrid", "description": "Horizontal subgrid description (EMD v1.0 Section 4.1.2).\n\nA horizontal subgrid describes the grid cells at one of the stagger positions\nof a horizontal computational grid. Often the locations of mass-related and\nvelocity-related variables differ, so more than one horizontal subgrid will\nbe defined as part of a horizontal computational grid.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "cell_variable_type": { "description": "The types of physical variables that are carried at, or representative of conditions at, the cells described by this horizontal subgrid. Taken from 7.4 cell_variable_type CV. Options: 'mass', 'x_velocity', 'y_velocity', 'velocity'. E.g. ['mass'], ['x_velocity'], ['mass', 'x_velocity', 'y_velocity'], ['mass', 'velocity']. Can be an empty list in certain cases.", "items": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/CellVariableType" } ] }, "title": "Cell Variable Type", "type": "array" }, "horizontal_grid_cells": { "$ref": "#/$defs/HorizontalGridCells", "description": "A description of the characteristics and location of the grid cells of this subgrid." } }, "$defs": { "CellVariableType": { "additionalProperties": true, "description": "Cell variable type (EMD v1.0 Section 7.4).\n\nOptions: mass, x_velocity, y_velocity, velocity\n\nTypes of physical variables that are carried at, or representative of conditions at,\ncells of a horizontal subgrid.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "CellVariableType", "type": "object" }, "GridMapping": { "additionalProperties": true, "description": "Grid mapping (EMD v1.0 Section 7.7).\n\nOptions: latitude_longitude, lambert_conformal_conic, etc.\n\nThe name of the coordinate reference system of the horizontal coordinates.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "GridMapping", "type": "object" }, "GridType": { "additionalProperties": true, "description": "Horizontal grid type (EMD v1.0 Section 7.6).\n\nOptions: regular_latitude_longitude, regular_gaussian, reduced_gaussian, tripolar, etc.\n\nA grid type describes the method for distributing grid points over the sphere.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "GridType", "type": "object" }, "HorizontalGridCells": { "additionalProperties": true, "description": "Horizontal grid cells description (EMD v1.0 Section 4.1.3).\n\nHorizontal grid cells are described by a coordinate system, cell resolutions,\nas well as a number of other grid features. The description does not include\nany information on whether or not the grid cells form part of a model component's\ncomputational grid, and so may be used to describe an arbitrary output grid.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "A description of the grid. A description is only required if there is information that is not covered by any of the other properties. Omit when not required.", "title": "Description" }, "drs_name": { "title": "Drs Name", "type": "string" }, "region": { "anyOf": [ { "$ref": "#/$defs/Region" }, { "type": "string" } ], "description": "The geographical region, or regions, over which the component is simulated. A region is a contiguous part of the Earth's surface, and may include areas for which no calculations are made (such as ocean areas for a land surface component). Taken from 7.5 region CV. E.g. 'global', 'antarctica', 'greenland', 'limited_area'", "title": "Region" }, "grid_type": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/GridType" } ], "description": "The horizontal grid type, i.e. the method of distributing grid cells over the region. Taken from 7.6 grid_type CV. E.g. 'regular_latitude_longitude', 'tripolar'", "title": "Grid Type" }, "grid_mapping": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/GridMapping" }, { "type": "null" } ], "default": null, "description": "The name of the coordinate reference system of the horizontal coordinates. Taken from 7.7 grid_mapping CV. E.g. 'latitude_longitude', 'lambert_conformal_conic'. Can be None or empty for certain grid types (e.g., tripolar grids).", "title": "Grid Mapping" }, "temporal_refinement": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/TemporalRefinement" } ], "description": "The grid temporal refinement, indicating how the distribution of grid cells varies with time. Taken from 7.8 temporal_refinement CV. E.g. 'static'", "title": "Temporal Refinement" }, "spatial_refinement": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The grid spatial refinement, indicating how the distribution of grid cells varies with space. NEW in EMD v1.0. Omit when not applicable.", "title": "Spatial Refinement" }, "x_resolution": { "anyOf": [ { "exclusiveMinimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "\nThe size of grid cells in the X direction.\n\nCells for which no calculations are made are included (such as ocean areas\nfor a land surface component).\n\nThe X direction for a grid defined by spherical polar coordinates is longitude.\n\nThe value's physical units are given by the horizontal_units property.\n\nReport only when cell sizes are identical or else reasonably uniform (in their given units).\nWhen cells sizes in the X direction are not identical, a representative value should be\nprovided and this fact noted in the description property.\nIf the cell sizes vary by more than 25%, set this to None.\n", "title": "X Resolution" }, "y_resolution": { "anyOf": [ { "exclusiveMinimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "\nThe size of grid cells in the Y direction.\n\nCells for which no calculations are made are included (such as ocean areas\nfor a land surface component).\n\nThe Y direction for a grid defined by spherical polar coordinates is latitude.\n\nThe value's physical units are given by the horizontal_units property.\n\nReport only when cell sizes are identical or else reasonably uniform (in their given units).\nWhen cells sizes in the Y direction are not identical, a representative value should be\nprovided and this fact noted in the description property.\nIf the cell sizes vary by more than 25%, set this to None.\n", "title": "Y Resolution" }, "horizontal_units": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "\nThe physical units of the x_resolution and y_resolution property values.\n\nIf x_resolution and y_resolution are None, set this to None.\n", "title": "Horizontal Units" }, "southernmost_latitude": { "anyOf": [ { "maximum": 90.0, "minimum": -90.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "\nThe southernmost grid cell latitude, in degrees north.\n\nCells for which no calculations are made are included.\nThe southernmost latitude may be shared by multiple cells.\n\nIf the southernmost latitude is not known (e.g. the grid is adaptive), use None.\n", "title": "Southernmost Latitude" }, "westernmost_longitude": { "anyOf": [ { "maximum": 360.0, "minimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "\nThe westernmost grid cell longitude, in degrees east, of the southernmost grid cell(s).\n\nCells for which no calculations are made are included.\nThe westernmost longitude is the smallest longitude value of the cells\nthat share the latitude given by the southernmost_latitude.\n\nIf the westernmost longitude is not known (e.g. the grid is adaptive), use None.\n", "title": "Westernmost Longitude" }, "n_cells": { "anyOf": [ { "minimum": 1, "type": "integer" }, { "type": "null" } ], "default": null, "description": "\nThe total number of cells in the horizontal grid.\n\nIf the total number of grid cells is not constant, set to None.\n", "title": "N Cells" }, "truncation_method": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/TruncationMethod" }, { "type": "null" } ], "default": null, "description": "The method for truncating the spherical harmonic representation of a spectral model when reporting on this grid. If the grid is not used for reporting spherical harmonic representations, set to None.", "title": "Truncation Method" }, "truncation_number": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "The zonal (east-west) wave number at which a spectral model is truncated when reporting on this grid. If the grid is not used for reporting spectral models, set to None.", "title": "Truncation Number" }, "resolution_range_km": { "anyOf": [ { "items": { "type": "number" }, "maxItems": 2, "minItems": 2, "type": "array" }, { "type": "null" } ], "default": null, "description": "\nThe minimum and maximum resolution (in km) of cells of the horizontal grid.\n\nShould be calculated according to the algorithm implemented by\nhttps://github.com/PCMDI/nominal_resolution/blob/master/lib/api.py\nYou need to take the min and max of the array that is returned\nwhen using the returnMaxDistance of the mean_resolution function.\n", "title": "Resolution Range Km" } }, "required": [ "id", "type", "drs_name", "region", "grid_type", "temporal_refinement" ], "title": "HorizontalGridCells", "type": "object" }, "Region": { "additionalProperties": true, "description": "Region associated with the dataset\n\nExamples: \"glb\", \"30s-90s\", \"grl\"\n\nIn other words, the domain over which the dataset is provided.\nThis is intended as a rough categorisation only\nand is not precisely defined.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "cf_standard_region": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Cf Standard Region" }, "iso_region": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Iso Region" } }, "required": [ "id", "type", "drs_name", "cf_standard_region", "iso_region" ], "title": "Region", "type": "object" }, "TemporalRefinement": { "additionalProperties": true, "description": "Temporal refinement (EMD v1.0 Section 7.8).\n\nOptions: static, etc.\n\nThe grid temporal refinement, indicating how the distribution of grid cells varies with time.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "TemporalRefinement", "type": "object" }, "TruncationMethod": { "additionalProperties": true, "description": "Truncation method (EMD v1.0 Section 7.12).\n\nThe method for truncating the spherical harmonic representation of a spectral model.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "TruncationMethod", "type": "object" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name", "horizontal_grid_cells" ] }
- field cell_variable_type: List[str | CellVariableType] [Optional][source]#
The types of physical variables that are carried at, or representative of conditions at, the cells described by this horizontal subgrid. Taken from 7.4 cell_variable_type CV. Options: ‘mass’, ‘x_velocity’, ‘y_velocity’, ‘velocity’. E.g. [‘mass’], [‘x_velocity’], [‘mass’, ‘x_velocity’, ‘y_velocity’], [‘mass’, ‘velocity’]. Can be an empty list in certain cases.
- field horizontal_grid_cells: HorizontalGridCells [Required][source]#
A description of the characteristics and location of the grid cells of this subgrid.
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.HorizontalUnits[source]#
Bases:
PlainTermDataDescriptorShow JSON schema
{ "title": "HorizontalUnits", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.InitializationIndex[source]#
Bases:
PatternTermDataDescriptorLabel that identifies the initialization variant used to produce a dataset
Examples: “i1”, “i2”, “i196001”, “i201001”, “i201001a”, “i201001b”
This label can be used, for example, to distinguish between two simulations that were initialised in different ways or on different dates (this is most commonly used for decadal prediction simulations).
When this is of the form id*, the value has no intrinsic meaning within the CVs. However, in other external sources (to be confirmed which) the meaning of this initialization label for a given simulation can be looked up.
When this is of the form id{6}[abcde]?, the digits indicate the year and month used for initialising the simulation, with any suffix letter used to distinguish between simulations that differ in their initialization but nonetheless use the same year and month.
Show JSON schema
{ "title": "InitializationIndex", "description": "Label that identifies the initialization variant used to produce a dataset\n\nExamples: \"i1\", \"i2\", \"i196001\", \"i201001\", \"i201001a\", \"i201001b\"\n\nThis label can be used, for example, to distinguish between two simulations\nthat were initialised in different ways or on different dates\n(this is most commonly used for decadal prediction simulations).\n\nWhen this is of the form `i\\d*`, the value has no intrinsic meaning within the CVs.\nHowever, in other external sources (to be confirmed which)\nthe meaning of this initialization label for a given simulation can be looked up.\n\nWhen this is of the form `i\\d{6}[abcde]?`,\nthe digits indicate the year and month used for initialising the simulation,\nwith any suffix letter used to distinguish\nbetween simulations that differ in their initialization\nbut nonetheless use the same year and month.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "regex": { "title": "Regex", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "regex" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.Institution[source]#
Bases:
PlainTermDataDescriptorA registered institution
Examples: “IPSL”, “CR”, “NCAR”, “CNRM”
Unlike
Organisation, this can only refer to a single entity (institute, group, person).Show JSON schema
{ "title": "Institution", "description": "A registered institution\n\nExamples: \"IPSL\", \"CR\", \"NCAR\", \"CNRM\"\n\nUnlike :py:class:`Organisation`, this can only refer to a single entity\n(institute, group, person).", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "acronyms": { "items": { "type": "string" }, "title": "Acronyms", "type": "array" }, "labels": { "items": { "type": "string" }, "title": "Labels", "type": "array" }, "location": { "items": { "$ref": "#/$defs/Location" }, "title": "Location", "type": "array" }, "ror": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Ror" }, "urls": { "items": { "format": "uri", "maxLength": 2083, "minLength": 1, "type": "string" }, "title": "Urls", "type": "array" } }, "$defs": { "Location": { "description": "Location", "properties": { "city": { "title": "City", "type": "string" }, "country": { "title": "Country", "type": "string" }, "lat": { "maximum": 90.0, "minimum": -90.0, "title": "Lat", "type": "number" }, "lon": { "maximum": 180.0, "minimum": -180.0, "title": "Lon", "type": "number" } }, "required": [ "city", "country", "lat", "lon" ], "title": "Location", "type": "object" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name", "acronyms", "labels", "location", "ror", "urls" ] }
- field acronyms: list[str] [Required][source]#
Known acronyms for this member/entity apart from the registered one
The registered/official acronym is given in self.drs_name.
- field labels: list[str] [Required][source]#
Labels that can be used for this institute
These are free-text and can be used when the member/entity needs to be referred to in full, rather than by its acronym. This can also be thought of as ‘long names’.
- field ror: str | None [Required][source]#
Research organisation registry (https://ror.org/) ID
If None, this organisation is not registered with ROR or the ROR was not supplied at the time of registration.
- field urls: list[HttpUrl] [Required][source]#
URL(s) relevant for finding out more information about this member/entity
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.KnownBrandedVariable[source]#
Bases:
PlainTermDataDescriptorA climate-related quantity or measurement, including information about sampling.
The concept of a branded variable was introduced in CMIP7. A branded variable is composed of two parts. The first part is the root variable (see
Variable). The second is the suffix (seeBrandedSuffix).For further details on the development of branded variables, see [this paper draft](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).
Show JSON schema
{ "title": "KnownBrandedVariable", "description": "A climate-related quantity or measurement, including information about sampling.\n\nThe concept of a branded variable was introduced in CMIP7.\nA branded variable is composed of two parts.\nThe first part is the root variable (see :py:class:`Variable`).\nThe second is the suffix (see :py:class:`BrandedSuffix`).\n\nFor further details on the development of branded variables,\nsee [this paper draft](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "cf_standard_name": { "description": "CF standard name, e.g., 'air_temperature'", "title": "Cf Standard Name", "type": "string" }, "cf_units": { "description": "CF standard units, e.g., 'K'", "title": "Cf Units", "type": "string" }, "cf_sn_status": { "description": "CF standard name status, e.g., 'approved'", "title": "Cf Sn Status", "type": "string" }, "variable_root_name": { "description": "Variable root name, e.g., 'ta'", "title": "Variable Root Name", "type": "string" }, "var_def_qualifier": { "default": "", "description": "Variable definition qualifier", "title": "Var Def Qualifier", "type": "string" }, "branding_suffix_name": { "description": "Branding suffix, e.g., 'tavg-p19-hxy-air'", "title": "Branding Suffix Name", "type": "string" }, "dimensions": { "description": "NetCDF dimensions", "items": { "type": "string" }, "title": "Dimensions", "type": "array" }, "cell_methods": { "default": "", "description": "CF cell_methods attribute", "title": "Cell Methods", "type": "string" }, "cell_measures": { "default": "", "description": "CF cell_measures attribute", "title": "Cell Measures", "type": "string" }, "history": { "default": "", "description": "Processing history", "title": "History", "type": "string" }, "realm": { "description": "Earth system realm, e.g., 'atmos'", "title": "Realm", "type": "string" }, "temporal_label": { "description": "Temporal label, e.g., 'tavg'", "title": "Temporal Label", "type": "string" }, "vertical_label": { "description": "Vertical label, e.g., 'p19'", "title": "Vertical Label", "type": "string" }, "horizontal_label": { "description": "Horizontal label, e.g., 'hxy'", "title": "Horizontal Label", "type": "string" }, "area_label": { "description": "Area label, e.g., 'air'", "title": "Area Label", "type": "string" }, "bn_status": { "description": "Branded variable status, e.g., 'accepted'", "title": "Bn Status", "type": "string" }, "positive_direction": { "default": "", "description": "Positive direction for the variable", "title": "Positive Direction", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name", "cf_standard_name", "cf_units", "cf_sn_status", "variable_root_name", "branding_suffix_name", "dimensions", "realm", "temporal_label", "vertical_label", "horizontal_label", "area_label", "bn_status" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.License[source]#
Bases:
PlainTermDataDescriptorLicense that applies to the dataset
Examples: “CC-BY-4.0”, “CC0-1.0”
Licenses must be approved by the WIP & CMIP panel before they can be used in CMIP exercises.
Show JSON schema
{ "title": "License", "description": "License that applies to the dataset\n\nExamples: \"CC-BY-4.0\", \"CC0-1.0\"\n\nLicenses must be approved by the WIP & CMIP panel\nbefore they can be used in CMIP exercises.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "spdx_id": { "title": "Spdx Id", "type": "string" }, "url": { "format": "uri", "maxLength": 2083, "minLength": 1, "title": "Url", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name", "spdx_id", "url" ] }
- field spdx_id: str [Required][source]#
SPDX license identifier (https://spdx.org/licenses/)
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.MemberId[source]#
Bases:
CompositeTermDataDescriptorThe member_id uniquely identifies a specific model simulation within an experiment. It is created by combining the sub_experiment, which describes the setup or timing of the simulation (like a specific start year), and the variant_label, which details the configuration of the model (including initial conditions, physics, and forcings). Together, they form a code like s1960-r1i1p1f1. This allows users to distinguish between different ensemble members and understand how each run differs from others within the same experiment.
Show JSON schema
{ "title": "MemberId", "description": "The member_id uniquely identifies a specific model simulation within an experiment. It is created by combining the sub_experiment, which describes the setup or timing of the simulation (like a specific start year), and the variant_label, which details the configuration of the model (including initial conditions, physics, and forcings). Together, they form a code like s1960-r1i1p1f1. This allows users to distinguish between different ensemble members and understand how each run differs from others within the same experiment.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "separator": { "title": "Separator", "type": "string" }, "parts": { "items": { "$ref": "#/$defs/CompositeTermPart" }, "title": "Parts", "type": "array" } }, "$defs": { "CompositeTermPart": { "additionalProperties": true, "description": "A reference to a term, part of a composite term.", "properties": { "id": { "anyOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Id" }, "type": { "title": "Type", "type": "string" }, "is_required": { "title": "Is Required", "type": "boolean" } }, "required": [ "type", "is_required" ], "title": "CompositeTermPart", "type": "object" } }, "additionalProperties": true, "required": [ "id", "type", "separator", "parts" ] }
- field parts: list[CompositeTermPart] [Required][source]#
The components.
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.MipEra[source]#
Bases:
PlainTermDataDescriptorLabel that identifies the MIP era to which a dataset belongs
Examples: “CMIP6”, “CMIP7”
The MIP era is useful to distinguish among experiments performed during different CMIP phases but with differences in experimental protocol in each phase. For example, the “historical” experiments appear in multiple phases of CMIP but have different input forcings in each. This difference can be identified using the MIP era data descriptor.
Show JSON schema
{ "title": "MipEra", "description": "Label that identifies the MIP era to which a dataset belongs\n\nExamples: \"CMIP6\", \"CMIP7\"\n\nThe MIP era is useful to distinguish among experiments performed during different CMIP phases\nbut with differences in experimental protocol in each phase.\nFor example, the \"historical\" experiments appear in multiple phases of CMIP\nbut have different input forcings in each.\nThis difference can be identified using the MIP era data descriptor.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "url": { "format": "uri", "maxLength": 2083, "minLength": 1, "title": "Url", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name", "url" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.Model[source]#
Bases:
PlainTermDataDescriptorTop-level model description (EMD v1.0 Section 2).
The following properties provide a top-level description of the model as a whole.
Show JSON schema
{ "title": "Model", "description": "Top-level model description (EMD v1.0 Section 2).\n\nThe following properties provide a top-level description of the model as a whole.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "description": "A scientific overview of the top-level model. The description should include a brief mention of all the components listed in the 7.1 component CV, whether dynamically simulated, prescribed, or omitted.", "minLength": 1, "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "name": { "description": "The name of the top-level model. For CMIP7, this name will be registered as the model's source_id.", "minLength": 1, "title": "Name", "type": "string" }, "family": { "description": "The top-level model's 'family' name. Use 'none' to indicate that there is no such family.", "minLength": 1, "title": "Family", "type": "string" }, "dynamic_components": { "description": "The model components that are dynamically simulated within the top-level model. Taken from 7.1 component CV.", "items": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/ComponentType" } ] }, "minItems": 1, "title": "Dynamic Components", "type": "array" }, "prescribed_components": { "description": "The components that are represented in the top-level model with prescribed values. Taken from 7.1 component CV.", "items": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/ComponentType" } ] }, "title": "Prescribed Components", "type": "array" }, "omitted_components": { "description": "The components that are wholly omitted from the top-level model. Taken from 7.1 component CV.", "items": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/ComponentType" } ] }, "title": "Omitted Components", "type": "array" }, "calendar": { "description": "The calendar, or calendars, that define which dates are permitted in the top-level model. Taken from 7.2 calendar CV.", "items": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/Calendar" } ] }, "minItems": 1, "title": "Calendar", "type": "array" }, "release_year": { "description": "The year in which the top-level model being documented was released, or first used for published simulations.", "maximum": 2100, "minimum": 1900, "title": "Release Year", "type": "integer" }, "references": { "description": "One or more references to published work for the top-level model as a whole.", "items": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/Reference" } ] }, "minItems": 1, "title": "References", "type": "array" }, "model_components": { "description": "The model components that dynamically simulate processes within the model.", "items": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/EMDModelComponent" } ] }, "title": "Model Components", "type": "array" } }, "$defs": { "Arrangement": { "additionalProperties": true, "description": "Horizontal grid arrangement (EMD v1.0 Section 7.3).\n\nOptions: arakawa_a, arakawa_b, arakawa_c, arakawa_d, arakawa_e\n\nA grid arrangement describes the relative locations of mass- and velocity-related quantities\non the computed grid (for instance Collins et al. (2013), and for unstructured grids\nThuburn et al. (2009)).", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "Arrangement", "type": "object" }, "Calendar": { "additionalProperties": true, "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "Calendar", "type": "object" }, "CellVariableType": { "additionalProperties": true, "description": "Cell variable type (EMD v1.0 Section 7.4).\n\nOptions: mass, x_velocity, y_velocity, velocity\n\nTypes of physical variables that are carried at, or representative of conditions at,\ncells of a horizontal subgrid.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "CellVariableType", "type": "object" }, "ComponentType": { "additionalProperties": true, "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "ComponentType", "type": "object" }, "Coordinate": { "additionalProperties": true, "description": "Native vertical grid coordinate type.\n\nThe coordinate types are all CF standard names (except where indicated)\nwith the same definitions. See section 5.2 Native vertical grid properties.\n\nOptions for the native vertical grid Coordinate property:\n\n* **none** - (Not a standard name) There is no vertical dimension.\n* **height** - Height is the vertical distance above the earth's surface.\n* **geopotential_height** - Geopotential height is the geopotential divided by the standard acceleration due to gravity.\n* **air_pressure** - Air pressure is the pressure that exists in the medium of air.\n* **air_potential_temperature** - Air potential temperature is the temperature a parcel of air would have if moved dry adiabatically to a standard pressure.\n* **atmosphere_ln_pressure_coordinate** - Parametric atmosphere natural log pressure coordinate.\n* **atmosphere_sigma_coordinate** - Parametric atmosphere sigma coordinate.\n* **atmosphere_hybrid_sigma_pressure_coordinate** - Parametric atmosphere hybrid sigma pressure coordinate.\n* **atmosphere_hybrid_height_coordinate** - Parametric atmosphere hybrid height coordinate.\n* **atmosphere_sleve_coordinate** - Parametric atmosphere smooth vertical level coordinate.\n* **depth** - Depth is the vertical distance below the earth's surface.\n* **sea_water_pressure** - Sea water pressure is the pressure that exists in the medium of sea water.\n* **sea_water_potential_temperature** - Sea water potential temperature is the temperature a parcel of sea water would have if moved adiabatically to sea level pressure.\n* **ocean_sigma_coordinate** - Parametric ocean sigma coordinate.\n* **ocean_s_coordinate** - Parametric ocean s-coordinate.\n* **ocean_s_coordinate_g1** - Parametric ocean s-coordinate, generic form 1.\n* **ocean_s_coordinate_g2** - Parametric ocean s-coordinate, generic form 2.\n* **ocean_sigma_z_coordinate** - Parametric ocean sigma over z coordinate.\n* **ocean_double_sigma_coordinate** - Parametric ocean double sigma coordinate.\n* **land_ice_sigma_coordinate** - Land ice (glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves) sigma coordinate.\n* **z*** - (Not a standard name) The z* coordinate of Adcroft and Campin (2004).", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "Coordinate", "type": "object" }, "EMDModelComponent": { "additionalProperties": true, "description": "Model component description (EMD v1.0 Section 3).\n\nProperties that provide a description of individual model components.\n\nEight model components are defined that somewhat independently account for different\nsets of interactive processes: aerosol, atmosphere, atmospheric chemistry, land surface,\nland ice, ocean, ocean biogeochemistry, and sea ice.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "description": "A scientific overview of the model component. The description should summarise the key processes simulated by the model component.", "minLength": 1, "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "component": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/ComponentType" } ], "description": "The type of the model component. Taken from 7.1 component CV.", "title": "Component" }, "name": { "description": "The name of the model component.", "minLength": 1, "title": "Name", "type": "string" }, "family": { "description": "The model component's 'family' name. Use 'none' to indicate that there is no such family.", "minLength": 1, "title": "Family", "type": "string" }, "references": { "description": "One or more references to published work for the model component.", "items": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/Reference" } ] }, "minItems": 1, "title": "References", "type": "array" }, "code_base": { "description": "A URL (preferably for a DOI) for the source code for the model component. Set to 'private' if not publicly available.", "minLength": 1, "title": "Code Base", "type": "string" }, "embedded_in": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/ComponentType" }, { "type": "null" } ], "default": null, "description": "The host model component (identified by its component property) in which this component is 'embedded'. Taken from 7.1 component CV. Omit when this component is coupled with other components.", "title": "Embedded In" }, "coupled_with": { "anyOf": [ { "items": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/ComponentType" } ] }, "type": "array" }, { "type": "null" } ], "default": null, "description": "The model components (identified by their component properties) with which this component is 'coupled'. Taken from 7.1 component CV. Omit when this component is embedded in another component.", "title": "Coupled With" }, "horizontal_computational_grid": { "$ref": "#/$defs/HorizontalComputationalGrid", "description": "A standardised description of the model component's horizontal computational grid." }, "vertical_computational_grid": { "$ref": "#/$defs/VerticalComputationalGrid", "description": "A standardised description of the model component's vertical computational grid." } }, "required": [ "id", "type", "description", "drs_name", "component", "name", "family", "references", "code_base", "horizontal_computational_grid", "vertical_computational_grid" ], "title": "EMDModelComponent", "type": "object" }, "GridMapping": { "additionalProperties": true, "description": "Grid mapping (EMD v1.0 Section 7.7).\n\nOptions: latitude_longitude, lambert_conformal_conic, etc.\n\nThe name of the coordinate reference system of the horizontal coordinates.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "GridMapping", "type": "object" }, "GridType": { "additionalProperties": true, "description": "Horizontal grid type (EMD v1.0 Section 7.6).\n\nOptions: regular_latitude_longitude, regular_gaussian, reduced_gaussian, tripolar, etc.\n\nA grid type describes the method for distributing grid points over the sphere.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "GridType", "type": "object" }, "HorizontalComputationalGrid": { "additionalProperties": true, "description": "Horizontal computational grid description (EMD v1.0 Section 4.1.1).\n\nA model component's horizontal computational grid is composed of one or more\nhorizontal subgrids, on which different sets of variables are calculated.\nWhen the computational grid relies on more than one subgrid, it is referred to\nas a \"staggered\" grid. For most staggered grids, the velocity-related variables\nare calculated on a subgrid offset from the mass-related variables (e.g. pressure,\ntemperature, water vapour and other mass constituents).", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "arrangement": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/Arrangement" } ], "description": "A characterisation of the grid staggering defining the relative positions of computed mass-related and velocity-related variables. Taken from 7.3 arrangement CV. Options: 'arakawa_a', 'arakawa_b', 'arakawa_c', 'arakawa_d', 'arakawa_e'. E.g. 'arakawa_c'", "title": "Arrangement" }, "horizontal_subgrids": { "description": "All of the subgrids, of which there must be at least one, used to construct the horizontal computational grid. Each subgrid is associated with one or more variable types (mass-related, velocity-related, etc.), consistent with the arrangement property.", "items": { "$ref": "#/$defs/HorizontalSubgrid" }, "minItems": 1, "title": "Horizontal Subgrids", "type": "array" } }, "required": [ "id", "type", "arrangement", "horizontal_subgrids" ], "title": "HorizontalComputationalGrid", "type": "object" }, "HorizontalGridCells": { "additionalProperties": true, "description": "Horizontal grid cells description (EMD v1.0 Section 4.1.3).\n\nHorizontal grid cells are described by a coordinate system, cell resolutions,\nas well as a number of other grid features. The description does not include\nany information on whether or not the grid cells form part of a model component's\ncomputational grid, and so may be used to describe an arbitrary output grid.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "A description of the grid. A description is only required if there is information that is not covered by any of the other properties. Omit when not required.", "title": "Description" }, "drs_name": { "title": "Drs Name", "type": "string" }, "region": { "anyOf": [ { "$ref": "#/$defs/Region" }, { "type": "string" } ], "description": "The geographical region, or regions, over which the component is simulated. A region is a contiguous part of the Earth's surface, and may include areas for which no calculations are made (such as ocean areas for a land surface component). Taken from 7.5 region CV. E.g. 'global', 'antarctica', 'greenland', 'limited_area'", "title": "Region" }, "grid_type": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/GridType" } ], "description": "The horizontal grid type, i.e. the method of distributing grid cells over the region. Taken from 7.6 grid_type CV. E.g. 'regular_latitude_longitude', 'tripolar'", "title": "Grid Type" }, "grid_mapping": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/GridMapping" }, { "type": "null" } ], "default": null, "description": "The name of the coordinate reference system of the horizontal coordinates. Taken from 7.7 grid_mapping CV. E.g. 'latitude_longitude', 'lambert_conformal_conic'. Can be None or empty for certain grid types (e.g., tripolar grids).", "title": "Grid Mapping" }, "temporal_refinement": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/TemporalRefinement" } ], "description": "The grid temporal refinement, indicating how the distribution of grid cells varies with time. Taken from 7.8 temporal_refinement CV. E.g. 'static'", "title": "Temporal Refinement" }, "spatial_refinement": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "The grid spatial refinement, indicating how the distribution of grid cells varies with space. NEW in EMD v1.0. Omit when not applicable.", "title": "Spatial Refinement" }, "x_resolution": { "anyOf": [ { "exclusiveMinimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "\nThe size of grid cells in the X direction.\n\nCells for which no calculations are made are included (such as ocean areas\nfor a land surface component).\n\nThe X direction for a grid defined by spherical polar coordinates is longitude.\n\nThe value's physical units are given by the horizontal_units property.\n\nReport only when cell sizes are identical or else reasonably uniform (in their given units).\nWhen cells sizes in the X direction are not identical, a representative value should be\nprovided and this fact noted in the description property.\nIf the cell sizes vary by more than 25%, set this to None.\n", "title": "X Resolution" }, "y_resolution": { "anyOf": [ { "exclusiveMinimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "\nThe size of grid cells in the Y direction.\n\nCells for which no calculations are made are included (such as ocean areas\nfor a land surface component).\n\nThe Y direction for a grid defined by spherical polar coordinates is latitude.\n\nThe value's physical units are given by the horizontal_units property.\n\nReport only when cell sizes are identical or else reasonably uniform (in their given units).\nWhen cells sizes in the Y direction are not identical, a representative value should be\nprovided and this fact noted in the description property.\nIf the cell sizes vary by more than 25%, set this to None.\n", "title": "Y Resolution" }, "horizontal_units": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "\nThe physical units of the x_resolution and y_resolution property values.\n\nIf x_resolution and y_resolution are None, set this to None.\n", "title": "Horizontal Units" }, "southernmost_latitude": { "anyOf": [ { "maximum": 90.0, "minimum": -90.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "\nThe southernmost grid cell latitude, in degrees north.\n\nCells for which no calculations are made are included.\nThe southernmost latitude may be shared by multiple cells.\n\nIf the southernmost latitude is not known (e.g. the grid is adaptive), use None.\n", "title": "Southernmost Latitude" }, "westernmost_longitude": { "anyOf": [ { "maximum": 360.0, "minimum": 0.0, "type": "number" }, { "type": "null" } ], "default": null, "description": "\nThe westernmost grid cell longitude, in degrees east, of the southernmost grid cell(s).\n\nCells for which no calculations are made are included.\nThe westernmost longitude is the smallest longitude value of the cells\nthat share the latitude given by the southernmost_latitude.\n\nIf the westernmost longitude is not known (e.g. the grid is adaptive), use None.\n", "title": "Westernmost Longitude" }, "n_cells": { "anyOf": [ { "minimum": 1, "type": "integer" }, { "type": "null" } ], "default": null, "description": "\nThe total number of cells in the horizontal grid.\n\nIf the total number of grid cells is not constant, set to None.\n", "title": "N Cells" }, "truncation_method": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/TruncationMethod" }, { "type": "null" } ], "default": null, "description": "The method for truncating the spherical harmonic representation of a spectral model when reporting on this grid. If the grid is not used for reporting spherical harmonic representations, set to None.", "title": "Truncation Method" }, "truncation_number": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "The zonal (east-west) wave number at which a spectral model is truncated when reporting on this grid. If the grid is not used for reporting spectral models, set to None.", "title": "Truncation Number" }, "resolution_range_km": { "anyOf": [ { "items": { "type": "number" }, "maxItems": 2, "minItems": 2, "type": "array" }, { "type": "null" } ], "default": null, "description": "\nThe minimum and maximum resolution (in km) of cells of the horizontal grid.\n\nShould be calculated according to the algorithm implemented by\nhttps://github.com/PCMDI/nominal_resolution/blob/master/lib/api.py\nYou need to take the min and max of the array that is returned\nwhen using the returnMaxDistance of the mean_resolution function.\n", "title": "Resolution Range Km" } }, "required": [ "id", "type", "drs_name", "region", "grid_type", "temporal_refinement" ], "title": "HorizontalGridCells", "type": "object" }, "HorizontalSubgrid": { "additionalProperties": true, "description": "Horizontal subgrid description (EMD v1.0 Section 4.1.2).\n\nA horizontal subgrid describes the grid cells at one of the stagger positions\nof a horizontal computational grid. Often the locations of mass-related and\nvelocity-related variables differ, so more than one horizontal subgrid will\nbe defined as part of a horizontal computational grid.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "cell_variable_type": { "description": "The types of physical variables that are carried at, or representative of conditions at, the cells described by this horizontal subgrid. Taken from 7.4 cell_variable_type CV. Options: 'mass', 'x_velocity', 'y_velocity', 'velocity'. E.g. ['mass'], ['x_velocity'], ['mass', 'x_velocity', 'y_velocity'], ['mass', 'velocity']. Can be an empty list in certain cases.", "items": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/CellVariableType" } ] }, "title": "Cell Variable Type", "type": "array" }, "horizontal_grid_cells": { "$ref": "#/$defs/HorizontalGridCells", "description": "A description of the characteristics and location of the grid cells of this subgrid." } }, "required": [ "id", "type", "drs_name", "horizontal_grid_cells" ], "title": "HorizontalSubgrid", "type": "object" }, "Reference": { "additionalProperties": true, "description": "Academic reference to published work for the top-level model or model components.\n\nAn academic reference to published work for the top-level model or one of its model\ncomponents is defined by the following properties:\n\n* **Citation** - A human-readable citation for the work.\n E.g. Smith, R. S., Mathiot, P., Siahaan, A., Lee, V., Cornford, S. L., Gregory, J. M.,\n et al. (2021). Coupling the U.K. Earth System model to dynamic models of the Greenland\n and Antarctic ice sheets. Journal of Advances in Modeling Earth Systems, 13,\n e2021MS002520. https://doi.org/10.1029/2021MS002520, 2023\n\n* **DOI** - The persistent identifier (DOI) used to identify the work.\n A DOI is required for all references. A reference that does not already have a DOI\n (as could be the case for some technical reports, for instance) must be given one\n (e.g. with a service like Zenodo).\n E.g. https://doi.org/10.1029/2021MS002520", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "citation": { "description": "A human-readable citation for the work.", "minLength": 1, "title": "Citation", "type": "string" }, "doi": { "description": "The persistent identifier (DOI) used to identify the work. Must be a valid DOI URL.", "minLength": 1, "title": "Doi", "type": "string" } }, "required": [ "id", "type", "drs_name", "citation", "doi" ], "title": "Reference", "type": "object" }, "Region": { "additionalProperties": true, "description": "Region associated with the dataset\n\nExamples: \"glb\", \"30s-90s\", \"grl\"\n\nIn other words, the domain over which the dataset is provided.\nThis is intended as a rough categorisation only\nand is not precisely defined.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "cf_standard_region": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Cf Standard Region" }, "iso_region": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Iso Region" } }, "required": [ "id", "type", "drs_name", "cf_standard_region", "iso_region" ], "title": "Region", "type": "object" }, "TemporalRefinement": { "additionalProperties": true, "description": "Temporal refinement (EMD v1.0 Section 7.8).\n\nOptions: static, etc.\n\nThe grid temporal refinement, indicating how the distribution of grid cells varies with time.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "TemporalRefinement", "type": "object" }, "TruncationMethod": { "additionalProperties": true, "description": "Truncation method (EMD v1.0 Section 7.12).\n\nThe method for truncating the spherical harmonic representation of a spectral model.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "TruncationMethod", "type": "object" }, "VerticalComputationalGrid": { "additionalProperties": true, "description": "Vertical computational grid description (EMD v1.0 Section 4.2).\n\nThe model component's vertical computational grid is described by a subset of the following properties.", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "A description of the vertical grid. A description is only required if there is information that is not covered by any of the other properties. Omit when not required.", "title": "Description" }, "vertical_coordinate": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/Coordinate" } ], "description": "The coordinate type of the vertical grid. Taken from 7.11 vertical_coordinate CV. If there is no vertical grid, then the value 'none' must be selected.", "title": "Vertical Coordinate" }, "n_z": { "anyOf": [ { "minimum": 1, "type": "integer" }, { "type": "null" } ], "default": null, "description": "The number of layers (i.e. grid cells) in the Z direction. Omit when not applicable or not constant. If the number of layers varies in time or across the horizontal grid, then the n_z_range property may be used instead.", "title": "N Z" }, "n_z_range": { "anyOf": [ { "items": { "type": "integer" }, "maxItems": 2, "minItems": 2, "type": "array" }, { "type": "null" } ], "default": null, "description": "The minimum and maximum number of layers for vertical grids with a time- or space-varying number of layers. Omit if the n_z property has been set.", "title": "N Z Range" }, "bottom_layer_thickness": { "anyOf": [ { "exclusiveMinimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "The thickness of the bottom model layer (i.e. the layer closest to the centre of the Earth). The value should be reported as a dimensional (as opposed to parametric) quantity. All measurements are in metres (EMD v1.0).", "title": "Bottom Layer Thickness" }, "top_layer_thickness": { "anyOf": [ { "exclusiveMinimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "The thickness of the top model layer (i.e. the layer furthest away from the centre of the Earth). The value should be reported as a dimensional (as opposed to parametric) quantity. All measurements are in metres (EMD v1.0).", "title": "Top Layer Thickness" }, "top_of_model": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The upper boundary of the top model layer (i.e. the upper boundary of the layer that is furthest away from the centre of the Earth). The value should be relative to the lower boundary of the bottom layer of the model, or an appropriate datum (such as mean sea level). All measurements are in metres (EMD v1.0).", "title": "Top Of Model" } }, "required": [ "id", "type", "vertical_coordinate" ], "title": "VerticalComputationalGrid", "type": "object" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name", "name", "family", "dynamic_components", "calendar", "release_year", "references", "model_components" ] }
- Validators:
validate_calendar_list»calendarvalidate_component_lists»dynamic_componentsvalidate_component_lists»omitted_componentsvalidate_component_lists»prescribed_componentsvalidate_non_empty_strings»descriptionvalidate_non_empty_strings»familyvalidate_non_empty_strings»namevalidate_same_dynamic_components»model_components
- field calendar: List[str | Calendar] [Required][source]#
The calendar, or calendars, that define which dates are permitted in the top-level model. Taken from 7.2 calendar CV.
- Constraints:
min_length = 1
- Validated by:
validate_calendar_list
- field description: str = ''[source]#
The description of the term.
A scientific overview of the top-level model. The description should include a brief mention of all the components listed in the 7.1 component CV, whether dynamically simulated, prescribed, or omitted.
- Constraints:
min_length = 1
- Validated by:
validate_non_empty_strings
- field dynamic_components: List[str | ComponentType] [Required][source]#
The model components that are dynamically simulated within the top-level model. Taken from 7.1 component CV.
- Constraints:
min_length = 1
- Validated by:
validate_component_lists
- field family: str [Required][source]#
The top-level model’s ‘family’ name. Use ‘none’ to indicate that there is no such family.
- Constraints:
min_length = 1
- Validated by:
validate_non_empty_strings
- field model_components: List[str | EMDModelComponent] [Required][source]#
The model components that dynamically simulate processes within the model.
- Validated by:
validate_same_dynamic_components
- field name: str [Required][source]#
The name of the top-level model. For CMIP7, this name will be registered as the model’s source_id.
- Constraints:
min_length = 1
- Validated by:
validate_non_empty_strings
- field omitted_components: List[str | ComponentType] [Optional][source]#
The components that are wholly omitted from the top-level model. Taken from 7.1 component CV.
- Validated by:
validate_component_lists
- field prescribed_components: List[str | ComponentType] [Optional][source]#
The components that are represented in the top-level model with prescribed values. Taken from 7.1 component CV.
- Validated by:
validate_component_lists
- field references: List[str | Reference] [Required][source]#
One or more references to published work for the top-level model as a whole.
- Constraints:
min_length = 1
- field release_year: int [Required][source]#
The year in which the top-level model being documented was released, or first used for published simulations.
- Constraints:
ge = 1900
le = 2100
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- validator validate_calendar_list » calendar[source]#
Validate calendar list contains valid strings or Calendar objects.
- validator validate_component_lists » omitted_components, prescribed_components, dynamic_components[source]#
Validate component lists contain valid strings or ComponentType objects.
- validator validate_non_empty_strings » family, description, name[source]#
Validate that string fields are not empty.
- Pydantic model esgvoc.api.data_descriptors.ModelComponent[source]#
Bases:
PlainTermDataDescriptorModel component
Examples: “AOGCM”, “AER”, “BGC”
These terms are intended to help with identifying required components for experiments or filtering models based on having common components. For example, an aerosol scheme or a circulation model or a biogeochemistry component. However, model component is only an approximate term, there is no precise definition of whether any given model has or does not have a given component.
Show JSON schema
{ "title": "ModelComponent", "description": "Model component\n\nExamples: \"AOGCM\", \"AER\", \"BGC\"\n\nThese terms are intended to help with identifying required components for experiments\nor filtering models based on having common components.\nFor example, an aerosol scheme or a circulation model or a biogeochemistry component.\nHowever, model component is only an approximate term, there is no precise definition\nof whether any given model has or does not have a given component.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.NominalResolution[source]#
Bases:
PlainTermDataDescriptorApproximate horizontal resolution of a dataset
Examples: “1 km”, “250 km”, “500 km”
This should be calculated following the algorithm implemented by [PCMDI/nominal_resolution]() (although, of course, other implementations of the same algorithm could be used).
Show JSON schema
{ "title": "NominalResolution", "description": "Approximate horizontal resolution of a dataset\n\nExamples: \"1 km\", \"250 km\", \"500 km\"\n\nThis should be calculated following the algorithm implemented by\n[https://github.com/PCMDI/nominal_resolution/blob/master/lib/api.py]()\n(although, of course, other implementations of the same algorithm could be used).", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "magnitude": { "title": "Magnitude", "type": "number" }, "range": { "maxItems": 2, "minItems": 2, "prefixItems": [ { "type": "number" }, { "type": "number" } ], "title": "Range", "type": "array" }, "units": { "title": "Units", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name", "magnitude", "range", "units" ] }
- Validators:
validate_range»range
- field range: tuple[float, float] [Required][source]#
Range of mean resolutions to which this nominal resolution applies
- Validated by:
validate_range
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.ObsType[source]#
Bases:
PlainTermDataDescriptorShow JSON schema
{ "title": "ObsType", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.Organisation[source]#
Bases:
PlainTermDataDescriptorA registered organisation
Examples: “IPSL”, “NCAR”, “CNRM-CERFACS”, “SOLARIS-HEPPA”
Show JSON schema
{ "title": "Organisation", "description": "A registered organisation\n\nExamples: \"IPSL\", \"NCAR\", \"CNRM-CERFACS\", \"SOLARIS-HEPPA\"", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "members": { "items": { "anyOf": [ { "$ref": "#/$defs/Institution" }, { "type": "string" } ] }, "title": "Members", "type": "array" } }, "$defs": { "Institution": { "additionalProperties": true, "description": "A registered institution\n\nExamples: \"IPSL\", \"CR\", \"NCAR\", \"CNRM\"\n\nUnlike :py:class:`Organisation`, this can only refer to a single entity\n(institute, group, person).", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "acronyms": { "items": { "type": "string" }, "title": "Acronyms", "type": "array" }, "labels": { "items": { "type": "string" }, "title": "Labels", "type": "array" }, "location": { "items": { "$ref": "#/$defs/Location" }, "title": "Location", "type": "array" }, "ror": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Ror" }, "urls": { "items": { "format": "uri", "maxLength": 2083, "minLength": 1, "type": "string" }, "title": "Urls", "type": "array" } }, "required": [ "id", "type", "drs_name", "acronyms", "labels", "location", "ror", "urls" ], "title": "Institution", "type": "object" }, "Location": { "description": "Location", "properties": { "city": { "title": "City", "type": "string" }, "country": { "title": "Country", "type": "string" }, "lat": { "maximum": 90.0, "minimum": -90.0, "title": "Lat", "type": "number" }, "lon": { "maximum": 180.0, "minimum": -180.0, "title": "Lon", "type": "number" } }, "required": [ "city", "country", "lat", "lon" ], "title": "Location", "type": "object" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name", "members" ] }
- field members: list[Institution | str] [Required][source]#
Members associated with this organisation
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.PatternTermDDex[source]#
Bases:
PatternTermDataDescriptorShow JSON schema
{ "title": "PatternTermDDex", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "regex": { "title": "Regex", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "regex" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.PhysicsIndex[source]#
Bases:
PatternTermDataDescriptorLabel that identifies the physics variant used to produce a dataset
Examples: “p1”, “p2”, “p20”
This label can be used, for example, to distinguish between two simulations, one using a model’s ‘default physics’ and another using a model’s ‘other physics scheme’, which might yield information about how differences in physics within the model affects the simulation. The value has no intrinsic meaning within the CVs. However, in other external sources (to be confirmed which) the meaning of this physics label for a given simulation can be looked up.
Show JSON schema
{ "title": "PhysicsIndex", "description": "Label that identifies the physics variant used to produce a dataset\n\nExamples: \"p1\", \"p2\", \"p20\"\n\nThis label can be used, for example, to distinguish between two simulations,\none using a model's 'default physics'\nand another using a model's 'other physics scheme',\nwhich might yield information about how differences in physics within the model affects the simulation.\nThe value has no intrinsic meaning within the CVs.\nHowever, in other external sources (to be confirmed which)\nthe meaning of this physics label for a given simulation can be looked up.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "regex": { "title": "Regex", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "regex" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.PlainTermDDex[source]#
Bases:
PlainTermDataDescriptorShow JSON schema
{ "title": "PlainTermDDex", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.Product[source]#
Bases:
PlainTermDataDescriptorIdentifier of the data category
Examples: “model-output”, “observations”, derived”
This is not a precisely defined data descriptor, rather an approximate labelling.
Show JSON schema
{ "title": "Product", "description": "Identifier of the data category\n\nExamples: \"model-output\", \"observations\", derived\"\n\nThis is not a precisely defined data descriptor,\nrather an approximate labelling.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.PublicationStatus[source]#
Bases:
PlainTermDataDescriptorShow JSON schema
{ "title": "PublicationStatus", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.RealizationIndex[source]#
Bases:
PatternTermDataDescriptorLabel that identifies the realisation variant used to produce a dataset
Examples: “r1”, “r2”, “r23”
This label can be used to distinguish between two simulations that are equally likely but differ only due to stochastic variations. These differences can be purely stochastic (i.e. arising simply from stochastic variations when re-running the same simulation, even keeping all other conditions the same) or arise from differences in initial conditions e.g. starting/branching from different points in a control run/parent experiment. The value has no intrinsic meaning within the CVs. However, in other external sources (to be confirmed which) the meaning of this realisation label for a given simulation can be looked up.
Show JSON schema
{ "title": "RealizationIndex", "description": "Label that identifies the realisation variant used to produce a dataset\n\nExamples: \"r1\", \"r2\", \"r23\"\n\nThis label can be used to distinguish between two simulations\nthat are equally likely but differ only due to stochastic variations.\nThese differences can be purely stochastic\n(i.e. arising simply from stochastic variations when re-running the same simulation,\neven keeping all other conditions the same)\nor arise from differences in initial conditions\ne.g. starting/branching from different points in a control run/parent experiment.\nThe value has no intrinsic meaning within the CVs.\nHowever, in other external sources (to be confirmed which)\nthe meaning of this realisation label for a given simulation can be looked up.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "regex": { "title": "Regex", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "regex" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.Realm[source]#
Bases:
PlainTermDataDescriptorRealm associated with the dataset
Examples: “atmos”, “land”, “ocean”, “atmosChem”
This is intended as a rough categorisation only and is not precisely defined.
Show JSON schema
{ "title": "Realm", "description": "Realm associated with the dataset\n\nExamples: \"atmos\", \"land\", \"ocean\", \"atmosChem\"\n\nThis is intended as a rough categorisation only\nand is not precisely defined.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.Reference[source]#
Bases:
PlainTermDataDescriptorAcademic reference to published work for the top-level model or model components.
An academic reference to published work for the top-level model or one of its model components is defined by the following properties:
Citation - A human-readable citation for the work. E.g. Smith, R. S., Mathiot, P., Siahaan, A., Lee, V., Cornford, S. L., Gregory, J. M., et al. (2021). Coupling the U.K. Earth System model to dynamic models of the Greenland and Antarctic ice sheets. Journal of Advances in Modeling Earth Systems, 13, e2021MS002520. https://doi.org/10.1029/2021MS002520, 2023
DOI - The persistent identifier (DOI) used to identify the work. A DOI is required for all references. A reference that does not already have a DOI (as could be the case for some technical reports, for instance) must be given one (e.g. with a service like Zenodo). E.g. https://doi.org/10.1029/2021MS002520
Show JSON schema
{ "title": "Reference", "description": "Academic reference to published work for the top-level model or model components.\n\nAn academic reference to published work for the top-level model or one of its model\ncomponents is defined by the following properties:\n\n* **Citation** - A human-readable citation for the work.\n E.g. Smith, R. S., Mathiot, P., Siahaan, A., Lee, V., Cornford, S. L., Gregory, J. M.,\n et al. (2021). Coupling the U.K. Earth System model to dynamic models of the Greenland\n and Antarctic ice sheets. Journal of Advances in Modeling Earth Systems, 13,\n e2021MS002520. https://doi.org/10.1029/2021MS002520, 2023\n\n* **DOI** - The persistent identifier (DOI) used to identify the work.\n A DOI is required for all references. A reference that does not already have a DOI\n (as could be the case for some technical reports, for instance) must be given one\n (e.g. with a service like Zenodo).\n E.g. https://doi.org/10.1029/2021MS002520", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "citation": { "description": "A human-readable citation for the work.", "minLength": 1, "title": "Citation", "type": "string" }, "doi": { "description": "The persistent identifier (DOI) used to identify the work. Must be a valid DOI URL.", "minLength": 1, "title": "Doi", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name", "citation", "doi" ] }
- Validators:
validate_citation»citationvalidate_doi»doi
- field citation: str [Required][source]#
A human-readable citation for the work.
- Constraints:
min_length = 1
- Validated by:
validate_citation
- field doi: str [Required][source]#
The persistent identifier (DOI) used to identify the work. Must be a valid DOI URL.
- Constraints:
min_length = 1
- Validated by:
validate_doi
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.Regex[source]#
Bases:
PatternTermDataDescriptorShow JSON schema
{ "title": "Regex", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "regex": { "title": "Regex", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "regex" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.Region[source]#
Bases:
PlainTermDataDescriptorRegion associated with the dataset
Examples: “glb”, “30s-90s”, “grl”
In other words, the domain over which the dataset is provided. This is intended as a rough categorisation only and is not precisely defined.
Show JSON schema
{ "title": "Region", "description": "Region associated with the dataset\n\nExamples: \"glb\", \"30s-90s\", \"grl\"\n\nIn other words, the domain over which the dataset is provided.\nThis is intended as a rough categorisation only\nand is not precisely defined.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "cf_standard_region": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Cf Standard Region" }, "iso_region": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Iso Region" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name", "cf_standard_region", "iso_region" ] }
- field cf_standard_region: str | None [Required][source]#
CF standard region
See https://cfconventions.org/Data/standardized-region-list/standardized-region-list.current.html
If None, there is no CF standard region for this region
- field iso_region: str | None [Required][source]#
ISO 3166-1 alpha-3 region code
See https://www.iso.org/iso-3166-country-codes.html
If None, there is no ISO region code for this region
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.Resolution[source]#
Bases:
PlainTermDataDescriptorShow JSON schema
{ "title": "Resolution", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "value": { "title": "Value", "type": "string" }, "name": { "title": "Name", "type": "string" }, "unit": { "title": "Unit", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name", "value", "name", "unit" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.SourceType[source]#
Bases:
PlainTermDataDescriptorShow JSON schema
{ "title": "SourceType", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.SubExperiment[source]#
Bases:
PlainTermDataDescriptorShow JSON schema
{ "title": "SubExperiment", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.Table[source]#
Bases:
PlainTermDataDescriptorShow JSON schema
{ "title": "Table", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "product": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Product" }, "table_date": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Table Date" }, "variable_entry": { "items": { "type": "string" }, "title": "Variable Entry", "type": "array" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name", "product", "table_date" ] }
- Validators:
normalize_variable_entry»variable_entry
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.TemporalLabel[source]#
Bases:
PlainTermDataDescriptorLabel that describes a specific temporal sampling approach
Examples: “tavg”, “tpt”, “tclm”
This is set to “ti” (“time-independent”) when the data has no time axis. For underlying details and logic, please see [Taylor et al., 2025](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).
This label is used as the area component of a branded variable’s suffix (see
BrandedSuffix).Show JSON schema
{ "title": "TemporalLabel", "description": "Label that describes a specific temporal sampling approach\n\nExamples: \"tavg\", \"tpt\", \"tclm\"\n\nThis is set to \"ti\" (\"time-independent\") when the data has no time axis.\nFor underlying details and logic, please see\n[Taylor et al., 2025](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).\n\nThis label is used as the area component of a branded variable's suffix\n(see :py:class:`BrandedSuffix`).", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.TemporalRefinement[source]#
Bases:
PlainTermDataDescriptorTemporal refinement (EMD v1.0 Section 7.8).
Options: static, etc.
The grid temporal refinement, indicating how the distribution of grid cells varies with time.
Show JSON schema
{ "title": "TemporalRefinement", "description": "Temporal refinement (EMD v1.0 Section 7.8).\n\nOptions: static, etc.\n\nThe grid temporal refinement, indicating how the distribution of grid cells varies with time.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.TimeRange[source]#
Bases:
PatternTermDataDescriptorTime range spanned by the data
Examples: “185001-202112”, “18500101-20211231”, “203101010130-203112312230”, “185001-186412-clim”
The right choice of time range is tightly coupled to the frequency of the data. This coupling is not captured within the CVs. (It is hopefully enforced elsewhere e.g. in QAQC workflows.)
Show JSON schema
{ "title": "TimeRange", "description": "Time range spanned by the data\n\nExamples: \"185001-202112\", \"18500101-20211231\", \"203101010130-203112312230\", \"185001-186412-clim\"\n\nThe right choice of time range is tightly coupled to the frequency of the data.\nThis coupling is not captured within the CVs.\n(It is hopefully enforced elsewhere e.g. in QAQC workflows.)", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "regex": { "title": "Regex", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "regex" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.Title[source]#
Bases:
PatternTermDataDescriptorShow JSON schema
{ "title": "Title", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "regex": { "title": "Regex", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "regex" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.TrackingId[source]#
Bases:
PatternTermDataDescriptorTracking ID, i.e. unique ID, of a file
- Examples: “hdl:21.14107/f6635404-8a1a-4aa9-918d-3792e8321f04”,
This data descriptor applies only at the file level, not to datasets as a whole (each file in a dataset gets a unique ID).
The regex is of the form hdl:<prefix>/<uuid>, where <prefix> is a prefix which is the same for all files in the same ‘group’ and <uuid> is a universally unique ID (UUID).
The ‘group’ is a bit loosely defined and can be defined in different ways for different purposes. For CMIP phases, the ‘group’ is usually the CMIP phase i.e. all files that are part of the same CMIP phase use the same tracking ID prefix (e.g. all CMIP6 files have the same prefix, all CMIP7 files have the same prefix). (Also note that some projects haven’t really got this right, e.g. the input4MIPs project has re-used the CMIP6 prefix, rather than using its own.)
The prefixes come from [handle.net](https://www.handle.net/index.html). [handle.net](https://www.handle.net/index.html) prefixes are allotted to different CMIP (or other project) exercises. These prefixes are used by the [handle.net](https://www.handle.net/index.html) service to group all the entries for the given exercise together. These prefixes allow a) each file to have a unique ID and b) users to look up entries for all files using their unique ID via the [handle.net](https://www.handle.net/index.html) service. The prefixes are currently managed and registered by DKRZ on behalf of the ESGF team (we think, it’s not 100% clear).
The last part of the tracking ID is a UUID. The specification of a UUID is defined elsewhere (apparently in ISO/IEC 9834-8:2014). A new UUID must be generated for every single file such that every file has a unique tracking id (this uniqueness is both within a project thanks to the differing UUIDs and across projects thanks to the differing prefixes). Most programming languages have native support for UUID generation (e.g. the uuid library is part of Python’s standard library). For a standalone solution, the OSSP utility is available. It can be accessed from http://www.ossp.org/pkg/lib/uuid/. Since CMIP6, version 4 UUIDs (random number based) have been required.
The tracking IDs are used by a PID service so that users can find further information about the file by going to hdl.handle.net/<tracking_id_after_the_hdl_colon_prefix_is_removed> e.g. hdl.handle.net/21.14107/f6635404-8a1a-4aa9-918d-3792e8321f04 (a working link from CMIP6 for those who would like to see a live demonstration is [hdl.handle.net/21.14100/f2f502c9-9626-31c6-b016-3f7c0534803b](), which was inferred from a file in which the tracking ID is hdl:21.14100/f2f502c9-9626-31c6-b016-3f7c0534803b). (Or at least this link with handle.net is the intention. It hasn’t always happened e.g this is not the case for all CMIP7 input4MIPs files.)
Show JSON schema
{ "title": "TrackingId", "description": "Tracking ID, i.e. unique ID, of a file\n\nExamples: \"hdl:21.14107/f6635404-8a1a-4aa9-918d-3792e8321f04\",\n \"hdl:21.14100/718ee427-4efb-46a8-9f89-8192593b15fe\"\n\nThis data descriptor applies only at the file level,\nnot to datasets as a whole (each file in a dataset gets a unique ID).\n\nThe regex is of the form `hdl:<prefix>/<uuid>`,\nwhere `<prefix>` is a prefix which is the same for all files in the same 'group'\nand `<uuid>` is a universally unique ID (UUID).\n\nThe 'group' is a bit loosely defined and can be defined in different ways\nfor different purposes.\nFor CMIP phases, the 'group' is usually the CMIP phase\ni.e. all files that are part of the same CMIP phase use the same tracking ID prefix\n(e.g. all CMIP6 files have the same prefix, all CMIP7 files have the same prefix).\n(Also note that some projects haven't really got this right,\ne.g. the input4MIPs project has re-used the CMIP6 prefix, rather than using its own.)\n\nThe prefixes come from [handle.net](https://www.handle.net/index.html).\n[handle.net](https://www.handle.net/index.html) prefixes\nare allotted to different CMIP (or other project) exercises.\nThese prefixes are used by the\n[handle.net](https://www.handle.net/index.html)\nservice to group all the entries for the given exercise together.\nThese prefixes allow a) each file to have a unique ID\nand b) users to look up entries for all files using their unique ID\nvia the [handle.net](https://www.handle.net/index.html) service.\nThe prefixes are currently managed and registered by DKRZ\non behalf of the ESGF team (we think, it's not 100% clear).\n\nThe last part of the tracking ID is a UUID.\nThe specification of a UUID is defined elsewhere\n(apparently in ISO/IEC 9834-8:2014).\nA new UUID must be generated for every single file\nsuch that every file has a unique tracking id\n(this uniqueness is both within a project thanks to the differing UUIDs\nand across projects thanks to the differing prefixes).\nMost programming languages have native support for UUID generation\n(e.g. the `uuid` library is part of Python's standard library).\nFor a standalone solution, the OSSP utility is available.\nIt can be accessed from http://www.ossp.org/pkg/lib/uuid/.\nSince CMIP6, version 4 UUIDs (random number based) have been required.\n\nThe tracking IDs are\nused by a PID service\nso that users can find further information about the file\nby going to `hdl.handle.net/<tracking_id_after_the_hdl_colon_prefix_is_removed>`\ne.g. `hdl.handle.net/21.14107/f6635404-8a1a-4aa9-918d-3792e8321f04`\n(a working link from CMIP6 for those who would like to see a live demonstration is\n[hdl.handle.net/21.14100/f2f502c9-9626-31c6-b016-3f7c0534803b](),\nwhich was inferred from a file in which the tracking ID is\n`hdl:21.14100/f2f502c9-9626-31c6-b016-3f7c0534803b`).\n(Or at least this link with handle.net is the intention.\nIt hasn't always happened\ne.g this is not the case for all CMIP7 input4MIPs files.)", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "regex": { "title": "Regex", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "regex" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.TruncationMethod[source]#
Bases:
PlainTermDataDescriptorTruncation method (EMD v1.0 Section 7.12).
The method for truncating the spherical harmonic representation of a spectral model.
Show JSON schema
{ "title": "TruncationMethod", "description": "Truncation method (EMD v1.0 Section 7.12).\n\nThe method for truncating the spherical harmonic representation of a spectral model.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.Variable[source]#
Bases:
PlainTermDataDescriptorA climate-related quantity or measurement.
Examples: “tas”, “pr”, “psl”, “rlut”
These quantities represent key physical, chemical or biological properties of the Earth system and can be the result of direct observation of the climate system or simulations. Variables cover a range of aspects of the climate system, such as temperature, precipitation, sea level, radiation, or atmospheric composition. Some more information for variables that have been used in CMIP:
tas: Near-surface air temperature (measured at 2 meters above the surface)
pr: Precipitation
psl: Sea-level pressure
zg: Geopotential height
rlut: Top-of-atmosphere longwave radiation
siconc: Sea-ice concentration
co2: Atmospheric CO2 concentration
Since CMIP7, the concept of a variable has been augmented with the idea of ‘branding’, leading to the idea of a ‘branded variable’. For details, see
BrandedVariable.Sometimes ‘variable’ is also referred to as ‘root name’ or ‘out name’. There is mostly a one to one mapping between CF standard names and variables. However, this is not always possible so please don’t assume this is always the case.
Show JSON schema
{ "title": "Variable", "description": "A climate-related quantity or measurement.\n\nExamples: \"tas\", \"pr\", \"psl\", \"rlut\"\n\nThese quantities represent key physical, chemical or biological properties of the Earth system\nand can be the result of direct observation of the climate system or simulations.\nVariables cover a range of aspects of the climate system,\nsuch as temperature, precipitation, sea level, radiation, or atmospheric composition.\nSome more information for variables that have been used in CMIP:\n\n- *tas*: Near-surface air temperature (measured at 2 meters above the surface)\n- *pr*: Precipitation\n- *psl*: Sea-level pressure\n- *zg*: Geopotential height\n- *rlut*: Top-of-atmosphere longwave radiation\n- *siconc*: Sea-ice concentration\n- *co2*: Atmospheric CO2 concentration\n\nSince CMIP7, the concept of a variable has been augmented with the idea of 'branding',\nleading to the idea of a 'branded variable'.\nFor details, see :py:class:`BrandedVariable`.\n\nSometimes 'variable' is also referred to as 'root name' or 'out name'.\nThere is mostly a one to one mapping between CF standard names and variables.\nHowever, this is not always possible so please don't assume this is always the case.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" }, "long_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Long Name" }, "standard_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Standard Name" }, "units": { "title": "Units", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name", "long_name", "standard_name", "units" ] }
- field long_name: str | None [Required][source]#
Long name of the variable
This is free text and can take any value
- field standard_name: str | None [Required][source]#
Standard name of the variable
The standard names are defined by the CF-conventions.
If None, this variable has no standard name according to the CF-conventions.
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.VariantLabel[source]#
Bases:
PatternTermDataDescriptorThe variant which provides information about how a dataset was created
Examples: “r1i1p1f1”, “r2i2p2f1”, “r1i198001p1f1”, “r1i198001ap1f1”, “r1i199001bp1f1”
Really, this should be a composite term. However, as there is no separator between the parts, it has to be a pattern term (at least at the moment).
As of the latest round of CMIP, the variant label is usually composed of the following components:
Show JSON schema
{ "title": "VariantLabel", "description": "The variant which provides information about how a dataset was created\n\nExamples: \"r1i1p1f1\", \"r2i2p2f1\", \"r1i198001p1f1\", \"r1i198001ap1f1\", \"r1i199001bp1f1\"\n\nReally, this should be a composite term.\nHowever, as there is no separator between the parts, it has to be a pattern term\n(at least at the moment).\n\nAs of the latest round of CMIP,\nthe variant label is usually composed of the following components:\n\n#. :py:class:`RealizationIndex`\n#. :py:class:`InitializationIndex`\n#. :py:class:`PhysicsIndex`\n#. :py:class:`ForcingIndex`", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "regex": { "title": "Regex", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "regex" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.VerticalComputationalGrid[source]#
Bases:
DataDescriptorVertical computational grid description (EMD v1.0 Section 4.2).
The model component’s vertical computational grid is described by a subset of the following properties.
Show JSON schema
{ "title": "VerticalComputationalGrid", "description": "Vertical computational grid description (EMD v1.0 Section 4.2).\n\nThe model component's vertical computational grid is described by a subset of the following properties.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "A description of the vertical grid. A description is only required if there is information that is not covered by any of the other properties. Omit when not required.", "title": "Description" }, "vertical_coordinate": { "anyOf": [ { "type": "string" }, { "$ref": "#/$defs/Coordinate" } ], "description": "The coordinate type of the vertical grid. Taken from 7.11 vertical_coordinate CV. If there is no vertical grid, then the value 'none' must be selected.", "title": "Vertical Coordinate" }, "n_z": { "anyOf": [ { "minimum": 1, "type": "integer" }, { "type": "null" } ], "default": null, "description": "The number of layers (i.e. grid cells) in the Z direction. Omit when not applicable or not constant. If the number of layers varies in time or across the horizontal grid, then the n_z_range property may be used instead.", "title": "N Z" }, "n_z_range": { "anyOf": [ { "items": { "type": "integer" }, "maxItems": 2, "minItems": 2, "type": "array" }, { "type": "null" } ], "default": null, "description": "The minimum and maximum number of layers for vertical grids with a time- or space-varying number of layers. Omit if the n_z property has been set.", "title": "N Z Range" }, "bottom_layer_thickness": { "anyOf": [ { "exclusiveMinimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "The thickness of the bottom model layer (i.e. the layer closest to the centre of the Earth). The value should be reported as a dimensional (as opposed to parametric) quantity. All measurements are in metres (EMD v1.0).", "title": "Bottom Layer Thickness" }, "top_layer_thickness": { "anyOf": [ { "exclusiveMinimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "The thickness of the top model layer (i.e. the layer furthest away from the centre of the Earth). The value should be reported as a dimensional (as opposed to parametric) quantity. All measurements are in metres (EMD v1.0).", "title": "Top Layer Thickness" }, "top_of_model": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "default": null, "description": "The upper boundary of the top model layer (i.e. the upper boundary of the layer that is furthest away from the centre of the Earth). The value should be relative to the lower boundary of the bottom layer of the model, or an appropriate datum (such as mean sea level). All measurements are in metres (EMD v1.0).", "title": "Top Of Model" } }, "$defs": { "Coordinate": { "additionalProperties": true, "description": "Native vertical grid coordinate type.\n\nThe coordinate types are all CF standard names (except where indicated)\nwith the same definitions. See section 5.2 Native vertical grid properties.\n\nOptions for the native vertical grid Coordinate property:\n\n* **none** - (Not a standard name) There is no vertical dimension.\n* **height** - Height is the vertical distance above the earth's surface.\n* **geopotential_height** - Geopotential height is the geopotential divided by the standard acceleration due to gravity.\n* **air_pressure** - Air pressure is the pressure that exists in the medium of air.\n* **air_potential_temperature** - Air potential temperature is the temperature a parcel of air would have if moved dry adiabatically to a standard pressure.\n* **atmosphere_ln_pressure_coordinate** - Parametric atmosphere natural log pressure coordinate.\n* **atmosphere_sigma_coordinate** - Parametric atmosphere sigma coordinate.\n* **atmosphere_hybrid_sigma_pressure_coordinate** - Parametric atmosphere hybrid sigma pressure coordinate.\n* **atmosphere_hybrid_height_coordinate** - Parametric atmosphere hybrid height coordinate.\n* **atmosphere_sleve_coordinate** - Parametric atmosphere smooth vertical level coordinate.\n* **depth** - Depth is the vertical distance below the earth's surface.\n* **sea_water_pressure** - Sea water pressure is the pressure that exists in the medium of sea water.\n* **sea_water_potential_temperature** - Sea water potential temperature is the temperature a parcel of sea water would have if moved adiabatically to sea level pressure.\n* **ocean_sigma_coordinate** - Parametric ocean sigma coordinate.\n* **ocean_s_coordinate** - Parametric ocean s-coordinate.\n* **ocean_s_coordinate_g1** - Parametric ocean s-coordinate, generic form 1.\n* **ocean_s_coordinate_g2** - Parametric ocean s-coordinate, generic form 2.\n* **ocean_sigma_z_coordinate** - Parametric ocean sigma over z coordinate.\n* **ocean_double_sigma_coordinate** - Parametric ocean double sigma coordinate.\n* **land_ice_sigma_coordinate** - Land ice (glaciers, ice-caps and ice-sheets resting on bedrock and also includes ice-shelves) sigma coordinate.\n* **z*** - (Not a standard name) The z* coordinate of Adcroft and Campin (2004).", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "required": [ "id", "type", "drs_name" ], "title": "Coordinate", "type": "object" } }, "additionalProperties": true, "required": [ "id", "type", "vertical_coordinate" ] }
- Validators:
validate_n_z_exclusivity»n_zvalidate_n_z_range»n_z_rangevalidate_vertical_coordinate»vertical_coordinate
- field bottom_layer_thickness: float | None = None[source]#
The thickness of the bottom model layer (i.e. the layer closest to the centre of the Earth). The value should be reported as a dimensional (as opposed to parametric) quantity. All measurements are in metres (EMD v1.0).
- Constraints:
gt = 0
- field description: str | None = None[source]#
The description of the term.
A description of the vertical grid. A description is only required if there is information that is not covered by any of the other properties. Omit when not required.
- field n_z: int | None = None[source]#
The number of layers (i.e. grid cells) in the Z direction. Omit when not applicable or not constant. If the number of layers varies in time or across the horizontal grid, then the n_z_range property may be used instead.
- Constraints:
ge = 1
- Validated by:
validate_n_z_exclusivity
- field n_z_range: List[int] | None = None[source]#
The minimum and maximum number of layers for vertical grids with a time- or space-varying number of layers. Omit if the n_z property has been set.
- Constraints:
min_length = 2
max_length = 2
- Validated by:
validate_n_z_range
- field top_layer_thickness: float | None = None[source]#
The thickness of the top model layer (i.e. the layer furthest away from the centre of the Earth). The value should be reported as a dimensional (as opposed to parametric) quantity. All measurements are in metres (EMD v1.0).
- Constraints:
gt = 0
- field top_of_model: float | None = None[source]#
The upper boundary of the top model layer (i.e. the upper boundary of the layer that is furthest away from the centre of the Earth). The value should be relative to the lower boundary of the bottom layer of the model, or an appropriate datum (such as mean sea level). All measurements are in metres (EMD v1.0).
- field vertical_coordinate: str | Coordinate [Required][source]#
The coordinate type of the vertical grid. Taken from 7.11 vertical_coordinate CV. If there is no vertical grid, then the value ‘none’ must be selected.
- Validated by:
validate_vertical_coordinate
- validator validate_n_z_exclusivity » n_z[source]#
Validate that n_z and n_z_range are mutually exclusive.
- validator validate_n_z_range » n_z_range[source]#
Validate that n_z_range has exactly 2 values and min <= max.
- Pydantic model esgvoc.api.data_descriptors.VerticalCoordinate[source]#
Bases:
PlainTermDataDescriptorShow JSON schema
{ "title": "VerticalCoordinate", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.VerticalLabel[source]#
Bases:
PlainTermDataDescriptorLabel that describes a specific vertical sampling approach
Examples: “h2m”, “200hPa”, “p19”
This is set to “u” (“unspecified”) when the data has no vertical dimension. For underlying details and logic, please see [Taylor et al., 2025](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).
This label is used as the area component of a branded variable’s suffix (see
BrandedSuffix).Show JSON schema
{ "title": "VerticalLabel", "description": "Label that describes a specific vertical sampling approach\n\nExamples: \"h2m\", \"200hPa\", \"p19\"\n\nThis is set to \"u\" (\"unspecified\") when the data has no vertical dimension.\nFor underlying details and logic, please see\n[Taylor et al., 2025](https://docs.google.com/document/d/19jzecgymgiiEsTDzaaqeLP6pTvLT-NzCMaq-wu-QoOc/edit?pli=1&tab=t.0).\n\nThis label is used as the area component of a branded variable's suffix\n(see :py:class:`BrandedSuffix`).", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.VerticalUnits[source]#
Bases:
PlainTermDataDescriptorVertical units CV (7.14 vertical_units CV).
Physical units of vertical grid thickness and position values. Options include: m, Pa, K
Show JSON schema
{ "title": "VerticalUnits", "description": "Vertical units CV (7.14 vertical_units CV).\n\nPhysical units of vertical grid thickness and position values.\nOptions include: m, Pa, K", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
Generic classes#
- Pydantic model esgvoc.api.data_descriptors.data_descriptor.CompositeTermDataDescriptor[source]#
Bases:
DataDescriptorA data descriptor that describes terms composed of other terms.
Show JSON schema
{ "title": "CompositeTermDataDescriptor", "description": "A data descriptor that describes terms composed of other terms.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "separator": { "title": "Separator", "type": "string" }, "parts": { "items": { "$ref": "#/$defs/CompositeTermPart" }, "title": "Parts", "type": "array" } }, "$defs": { "CompositeTermPart": { "additionalProperties": true, "description": "A reference to a term, part of a composite term.", "properties": { "id": { "anyOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Id" }, "type": { "title": "Type", "type": "string" }, "is_required": { "title": "Is Required", "type": "boolean" } }, "required": [ "type", "is_required" ], "title": "CompositeTermPart", "type": "object" } }, "additionalProperties": true, "required": [ "id", "type", "separator", "parts" ] }
- field parts: list[CompositeTermPart] [Required][source]#
The components.
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.data_descriptor.CompositeTermPart[source]#
Bases:
ConfiguredBaseModelA reference to a term, part of a composite term.
Show JSON schema
{ "title": "CompositeTermPart", "description": "A reference to a term, part of a composite term.", "type": "object", "properties": { "id": { "anyOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Id" }, "type": { "title": "Type", "type": "string" }, "is_required": { "title": "Is Required", "type": "boolean" } }, "additionalProperties": true, "required": [ "type", "is_required" ] }
- Pydantic model esgvoc.api.data_descriptors.data_descriptor.ConfiguredBaseModel[source]#
Bases:
BaseModelShow JSON schema
{ "title": "ConfiguredBaseModel", "type": "object", "properties": {}, "additionalProperties": true }
- Pydantic model esgvoc.api.data_descriptors.data_descriptor.DataDescriptor[source]#
Bases:
ConfiguredBaseModel,ABCGeneric class for the data descriptor classes.
Show JSON schema
{ "title": "DataDescriptor", "description": "Generic class for the data descriptor classes.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type" ] }
- abstract accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.data_descriptor.DataDescriptorSubSet[source]#
Bases:
DataDescriptorA sub set of the information contains in a term. When using selected_term_fields, only id is guaranteed to be present. Other fields (type, description) may be None if not selected.
Show JSON schema
{ "title": "DataDescriptorSubSet", "description": "A sub set of the information contains in a term.\nWhen using selected_term_fields, only id is guaranteed to be present.\nOther fields (type, description) may be None if not selected.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Type" }, "description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Description" } }, "additionalProperties": true, "required": [ "id" ] }
- field type: str | None = None[source]#
The data descriptor to which the term belongs (optional in subset).
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- serialize_model(serializer: Any) dict[str, Any][source]#
Custom serializer that only includes fields that actually exist on the instance. This prevents Pydantic warnings when fields are removed via delattr(). Uses ‘wrap’ mode to override default serialization behavior completely.
- class esgvoc.api.data_descriptors.data_descriptor.DataDescriptorVisitor(*args, **kwargs)[source]#
Bases:
ProtocolThe specifications for a term visitor.
- visit_composite_term(term: CompositeTermDataDescriptor) Any[source]#
Visit a composite term.
- visit_pattern_term(term: PatternTermDataDescriptor) Any[source]#
Visit a pattern term.
- visit_plain_term(term: PlainTermDataDescriptor) Any[source]#
Visit a plain term.
- visit_sub_set_term(term: DataDescriptorSubSet) Any[source]#
Visit a sub set of the information of a term.
- Pydantic model esgvoc.api.data_descriptors.data_descriptor.PatternTermDataDescriptor[source]#
Bases:
DataDescriptorA data descriptor that describes terms defined by a regular expression.
Show JSON schema
{ "title": "PatternTermDataDescriptor", "description": "A data descriptor that describes terms defined by a regular expression.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "regex": { "title": "Regex", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "regex" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any
- Pydantic model esgvoc.api.data_descriptors.data_descriptor.PlainTermDataDescriptor[source]#
Bases:
DataDescriptorA data descriptor that describes hand written terms.
Show JSON schema
{ "title": "PlainTermDataDescriptor", "description": "A data descriptor that describes hand written terms.", "type": "object", "properties": { "id": { "title": "Id", "type": "string" }, "type": { "title": "Type", "type": "string" }, "description": { "default": "", "title": "Description", "type": "string" }, "drs_name": { "title": "Drs Name", "type": "string" } }, "additionalProperties": true, "required": [ "id", "type", "drs_name" ] }
- accept(visitor: DataDescriptorVisitor) Any[source]#
Accept an term visitor.
- Parameters:
visitor (DataDescriptorVisitor) – The term visitor.
- Returns:
Depending on the visitor.
- Return type:
Any