Skip to content

CMIP7: Remove model_type for CMIP7 processing. #693

@mo-jareddrayton

Description

@mo-jareddrayton

The request.metadata.model_type is redundant for CMIP7 processing but needs some thought as to how best to handle it.

https://github.com/MetOffice/CDDS/blob/main/cdds/cdds/common/request/metadata_section.py#L72

Also need to decouple the validator.

@classmethod
def model_types_validator(cls) -> Callable[[CVConfig, 'Request'], None]:
"""
Returns validator to validate the model types against the allowed and required
model types in the CV.
:return: validate function
:rtype: Callable[[CVConfig, 'Request'], None]
"""
def validate(cv_config: CVConfig, request: 'Request'):
allowed_model_types = cv_config.allowed_source_types(request.metadata.experiment_id)
model_types = request.metadata.model_type
valid_model_types = set(model_types).issubset(set(allowed_model_types))
if not valid_model_types:
raise CVEntryError('Not all model types are allowed by the CV')
required_model_types = cv_config.required_source_type(request.metadata.experiment_id)
if required_model_types:
contain_required_model_types = set(required_model_types).issubset(set(model_types))
if not contain_required_model_types:
raise CVEntryError('not all required model types are given.')
return validate

Configure usage.

user_config['cmor_dataset']['model_type'] = ' '.join(user_config['cmor_dataset']['model_type'])

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions